きな粉もち.net

.NET関連仕事に携わっています。OSSのソースを読んで気がついたことを中心に呟いたりブログに投稿したりしています。最近はUiPathを使ったRPAも研究中。気軽にフォローやツッコミよろしくおねがいします! Gitはここを使っています https://github.com/kinakomotitti

HttpClient × WebClient × HttpWebRequest

十分に理解していないためか、よく3つの違いを忘れてしまうので、戒めのためにも3つの違いをまとめておきます。

  1. System.Net.HttpWebRequest/HttpWebRespons
  2. System.Net.WebClient
  3. System.Net.Http.HttpClient

実装編

実装シナリオ:

あるURLにGETリクエストを投げて、レスポンスのコンテンツをStringの変数に格納する。

1の場合 

f:id:kinakomotitti:20171108224443p:plain

 

2の場合

f:id:kinakomotitti:20171108220216p:plain

 

3の場合

f:id:kinakomotitti:20171108220153p:plain

 (多分あってるよね・・・)

使い方の話

 WebClientはHttpWebRequestをラップして使いやすくしたクラスです。

ラップしているため、HttpWebRequestに比べてパフォーマンスは低下しているそうですが、通信のためのコード量を減らすことができます。

HttpClientは、.NET Framework 4.5で追加されたクラスで、WebClientよりもよりHTTPの仕様に近づいたものになります。

GET、POSTなど、よりわかりやすいメソッドが提供されていますが、バグのような仕様があるそうなので注意して使う必要があります。

 

開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント

 

My two cents on WebClient vs HttpClient vs HttpWebRequest | InfoWorld