137

HttpWebRequest/Responseクラスで達成できることのほとんどは、クラスでも達成できるように思えWebClientます。WebClientの高レベルのラッパーであるどこかを読みましたWebRequest/Response
これまでのところ、 で実現できて で実現HttpWebRequest/ResponseできないものWebClientは見当たりませんし、HttpWebRequest/Response でより「きめ細かい」制御ができる場所もわかりません。

いつ WebClient を使用する必要がありHttpWebRequest/Responseますか? (明らかに、HttpWebRequest/ResponseHTTP 固有です。)

HttpWebRequest/Responseレベルが低い場合WebClient、達成HttpWebRequest/Responseできないことで達成できることはWebClient何ですか?

4

8 に答える 8

91

を使用HttpWebRequestすると、リクエストをより詳細に制御できます。Cookie、ヘッダー、プロトコルなどを設定できます...応答で、Cookie とヘッダーを取得することもできます

于 2009-11-07T21:01:54.637 に答える
56

HttpWebRequestキープアライブを使用するかどうか、どの接続プールを使用するか、書き込みをバッファリングするかどうかなど、きめ細かいプロトコル制御を可能にする、より多くのものを公開します。

WebClientこれらすべてを公開しているわけではありません (ただしWebClient、基礎となる Request オブジェクトからサブクラス化して getaccess することはできます)。

WebClient操作 (例: POST/GET/フォームのアップロード) を実行したいだけで、、、、および応答ストリームの作成と管理に煩わされない場合に役立ちますHttpWebRequestRequestStreamHttpWebResponse

于 2009-11-08T16:14:13.877 に答える
14

Tim Heuer のブログから - http://timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx

Silverlight では代わりに、WebClient または HttpWebRequest を使用する必要があります。違いは何ですか?こちらはティムホイヤーバージョン。WebClient は、GET 要求を非常に簡単に実行して応答ストリームを取得する、より単純な実装です。HttpWebRequest は、リクエストをもう少し細かく制御する必要がある場合、ヘッダーやその他のカスタマイズを送信する必要がある場合に最適です。

于 2009-11-07T21:02:46.113 に答える
13

WebClientクラスユーザー インターフェイス スレッドで実行されるため、データがインターネットからダウンロードされている間、ユーザー インターフェイスは応答しません。一方、HttpWebRequestクラスはユーザー インターフェイス スレッドをブロックせず、アプリケーションは応答します。そのため、インターネットから大量のデータをダウンロードするアプリや、データ ソースへのアクセスが遅いアプリでは、HttpWebRequest クラスを使用する必要があります。それ以外の場合はすべて、WebClient クラスを使用する必要があります。

于 2011-11-23T04:45:47.373 に答える
6

のもう 1 つの欠点は、HTTPを使用して応答テキストを取得するときにHTTPの値をWebClient無視することです。プロパティを介してエンコーディングを明示的に設定する必要があります。ContentTypecharsetEncoding

于 2013-02-09T02:37:39.103 に答える
5

「HttpWebRequest」は .NET 4.5 で廃止されました。現在、このクラスは内部専用です。

于 2015-01-27T19:28:59.680 に答える
5

もう1つ、HttpWebrquestは圧縮を許可しますが、Net.WebClientクラスはHTTP圧縮をサポートしていません

于 2012-06-01T01:30:06.273 に答える
2

1 つの例: WebClient では、1 回の要求/応答サイクルでデータを送信し、処理されたデータを取得することは不可能に思えますが、HttpWebRequest を使用するとそれを行うことができます。

于 2010-04-30T07:08:41.533 に答える