こんにちは。
前提・実現したいこと
Windows10を使ってVisual Studo 2017でUWPアプリケーションのプロジェクトを作っています。
Postでhttpサーバーに文字を送信して、結果のJsonを取得したいです。
UWPにはWebClientがないので、もともとWebClientとHttpUtilityを使っていたのをHttpClientに変更したいです。
argsはキーのペアで、
name, "白鷺",
language, "japanese",
kind, "bird"
のようなものです。
urlはhttpサーバーのurlです。
resultはjsonです。
発生している問題・エラーメッセージ
C#
1 client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.5"); 2 client.DefaultRequestHeaders.Add("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
あたりで、接続に失敗します。
HttpClientを使うのが初めてで、なにを渡したらよいかわからずにおります。
該当のソースコード
もとのコードです。
C#
1public static string GetJsonResult(Dictionary<string, string> args, string url) 2{ 3 string data = CreateQuerystring(args); 4 string result = GetHttpResponse(url, data); 5} 6 7public static string CreateQuerystring(Dictionary<string, string> args) 8{ 9 StringBuilder sb = new StringBuilder(); 10 foreach (string name in args.Keys) 11 { 12 sb.Append(HttpUtility.UrlEncode(name)); 13 sb.Append("="); 14 15 sb.Append(HttpUtility.UrlEncode(args[name])); 16 sb.Append("&"); 17 } 18 return sb.ToString(0, Math.Max(sb.Length - 1, 0)); 19} 20 21public static string GetHttpResponse(string url, string data) 22{ 23 byte[] rawData = client.UploadData(url, Encoding.UTF8.GetBytes(data)); 24 return Encoding.UTF8.GetString(rawData); 25}
試したこと
public static string GetHttpResponse(string url, string data) { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.5"); client.DefaultRequestHeaders.Add("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); var stringContent = new StringContent(data, System.Text.Encoding.UTF8); var message = client.PostAsync(url, stringContent); return message.Result.Content.ToString(); } public static string CreateQuerystring(Dictionary<string, string> args) { StringBuilder sb = new StringBuilder(); foreach (string name in args.Keys) { sb.Append(Uri.EscapeDataString(name)); sb.Append("="); sb.Append(Uri.EscapeDataString(args[name])); sb.Append("&"); } return sb.ToString(0, Math.Max(sb.Length - 1, 0)); }
求める回答
Q1)HttpClientのPostのコード。GetHttpResponse(string url, string data)のMethod
Q2)client.DefaultRequestHeadersを全部コメントアウトするとつながるが、そのとき結果はmessageのどこに入っているか。
Q3)そもそもはいっていないのか?
補足情報(FW/ツールのバージョンなど)
Intel Pentium(R) CPU 4415 Y 1.60GHz RAM 8GB Windows10Pro 64bit 1803 17134.345 Microsoft Visual Studio Community 2017 Version 15.8.5 VisualStudio.15.Release/15.8.5+28010.2036 Microsoft .NET Framework Version 4.7.03056 インストールされているバージョン:Community

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/03 04:07
退会済みユーザー
2018/12/03 04:19