きなこもち.net

.NET Framework × UiPath,Orchestrator × Azure × AWS × Angularなどの忘備録

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