十分に理解していないためか、よく3つの違いを忘れてしまうので、戒めのためにも3つの違いをまとめておきます。
- System.Net.HttpWebRequest/HttpWebRespons
- System.Net.WebClient
- System.Net.Http.HttpClient
実装編
実装シナリオ:
あるURLにGETリクエストを投げて、レスポンスのコンテンツをStringの変数に格納する。
1の場合
2の場合
3の場合
(多分あってるよね・・・)
使い方の話
WebClientはHttpWebRequestをラップして使いやすくしたクラスです。
ラップしているため、HttpWebRequestに比べてパフォーマンスは低下しているそうですが、通信のためのコード量を減らすことができます。
HttpClientは、.NET Framework 4.5で追加されたクラスで、WebClientよりもよりHTTPの仕様に近づいたものになります。
GET、POSTなど、よりわかりやすいメソッドが提供されていますが、バグのような仕様があるそうなので注意して使う必要があります。
開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント
My two cents on WebClient vs HttpClient vs HttpWebRequest | InfoWorld