現在、諸事情でConoHaのAPIを使って契約しているオブジェクトストレージにファイルをアップロードするアプリを
C#+WPFで作っています。
そしてJsonのリクエストを送るためにJson.NETを導入したのですが、
Json.NETを使ってネスト化されたJsonを送る方法がイマイチ分からないでいます。
例えば、トークン取得の場合は、
Json
1{ 2 "auth": { 3 "passwordCredentials": { 4 "username": "ConoHa", 5 "password": "paSSword123456#$%" 6 }, 7 "tenantId": "487727e3921d44e3bfe7ebb337bf085e" 8 } 9}
https://www.conoha.jp/docs/identity-post_tokens.html
このようなリクエストを送らなければならないのですが、どうもうまく作れません。
すべて「{}」で囲まなければならないのに「[]」で囲んでしまってBad Requestになったりです。
「Json C# ネスト」などで必死にググったのですがイマイチ解決法が見つかりませんでした。
以下、現在のアプリ側のソースです。
(これも全く機能してません)
class Token { public static void GetToken() { var requestModel = new RequestModel(); var auth = new RequestModel.auth(); var passwordCredentials = new RequestModel.auth.passwordCredentials(); var enc = Encoding.GetEncoding("UTF-8"); var requestURI = string.Format(Define.IdentityEndPoint + "/tokens"); var httpWebRequest = (HttpWebRequest)WebRequest.Create(requestURI); httpWebRequest.Method = "POST"; httpWebRequest.ContentType = "application/json"; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { passwordCredentials.username = Define.UserName; passwordCredentials.password = Define.Password; string json = JsonConvert.SerializeObject(requestModel); string json1 = JsonConvert.SerializeObject(passwordCredentials); streamWriter.Write(json); MessageBox.Show(json); MessageBox.Show(json1); streamWriter.Flush(); streamWriter.Close(); } //req.Headers.Add(string.Format("Accept: application/json")); var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { MessageBox.Show(streamReader.ReadToEnd()); } } } public class RequestModel { public class auth { public class passwordCredentials { public string username { get; set; } public string password { get; set; } } public string tenantid { get; set; } } }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/24 13:14
2017/06/24 14:59 編集
2017/06/24 15:51