読者です 読者をやめる 読者になる 読者になる

the glue

やってみたことで忘れそうなこと、役立ちそうなことなどをまとめています。たまに何気ない日常の話もします。

C#(.NET)でPOSTリクエストを投げたい

C# Web

経緯

C#からAPIサーバーにPOSTを投げようと思い検索していたところ、HttpWebRequestを使う例ばかりでてきて残念な感じがした。
今回はHttpClientを使ってPOSTを投げるコードを書いてみます。

目的

C#から特定のHTTPサーバーにPOSTを投げる

HttpWebRequestを使ったときの残念に感じた点

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のいいところ

  • 非同期であること

参考

System.Net.Http 名前空間 ()