C#(.NET)でPOSTリクエストを投げたい
経緯
C#からAPIサーバーにPOSTを投げようと思い検索していたところ、HttpWebRequestを使う例ばかりでてきて残念な感じがした。
今回はHttpClientを使ってPOSTを投げるコードを書いてみます。
目的
C#から特定のHTTPサーバーにPOSTを投げる
HttpWebRequestを使ったときの残念に感じた点
- HTTPメソッドを文字列で指定
httpRequest.Method = "POST";
みたいな
- リクエストのパラメータを文字列連結で生成
String params = "hoge=" + param_hoge + "&fuga=" + param_fuga;
みたいな
- 生成したパラメータをストリームに流す
var stream = httpRequest.GetRequestStream(); StreamWriter writer = new StreamWriter(stream, Encoding.UTF8); writer.WriteLine(params);
みたいな
- 非同期じゃない
HttpClientを使った例
- パラメータの生成
var content = new FormUrlEncodedContent(new Dictionary<string, string> { { "hoge", param_hoge }, { "fuga", param_fuga } }); HttpResponseMessage response = await httpClient.PostAsync("http://example.com/", content);
HttpClientのいいところ
- 非同期であること