回答:
WebClientは、最も一般的なタスクを簡略化するためにHttpWebRequestの上に構築された高レベルの抽象化です。たとえば、HttpWebResponseからコンテンツを取得する場合は、応答ストリームから読み取る必要があります。
var http = (HttpWebRequest)WebRequest.Create("http://example.com");
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var content = sr.ReadToEnd();WebClientでは、次のようにしますDownloadString。
var client = new WebClient();
var content = client.DownloadString("http://example.com");注:using簡潔にするため、両方の例のステートメントは省略しています。あなたは間違いなくあなたのウェブリクエストオブジェクトを適切に処分するように気をつけるべきです。
一般に、WebClientは迅速でダーティーな単純な要求に適し、HttpWebRequestは要求全体をより詳細に制御する必要がある場合に適しています。
HttpClient...(?かない場合があります)上記の激論のいくつかを解決するかもしれない、.NET 4.5が付属しています
                    using (WebClient client = new WebClient())
                    また、WebClientにはタイムアウトプロパティがありません。dafault値が100秒であり、インターネット接続がないかどうかを示すには多すぎるため、これが問題です。
その問題の回避策はこちらですhttps://stackoverflow.com/a/3052637/1303422
私は返信が長すぎることを知っていますが、将来の読者のための情報目的としてのみです。
WebRequest
System.Object
    System.MarshalByRefObject
        System.Net.WebRequestWebRequest抽象基本クラスです。したがって、実際には直接使用しません。派生クラス- HttpWebRequestとを使用しFileWebRequestます。
のCreateメソッドを使用WebRequestして、のインスタンスを作成しますWebRequest。GetResponseStreamを返しますdata stream。
からのクラスもFileWebRequestありFtpWebRequestます。通常、を使用して、リクエストを作成し、そのリクエストに応じて戻り値を、またはに変換します。以下に例を示します。inheritWebRequestWebRequestHttpWebRequestFileWebRequestFtpWebRequest
例:
var _request = (HttpWebRequest)WebRequest.Create("http://stackverflow.com");
var _response = (HttpWebResponse)_request.GetResponse();WebClient
System.Object
        System.MarshalByRefObject
            System.ComponentModel.Component
                System.Net.WebClientWebClientによって識別されるリソースに対する一般的な操作sendingとreceivingデータを提供しますURI。簡単に言うと、これはの上位レベルの抽象化ですHttpWebRequest。この「共通の操作」を区別するものであるWebClientから、HttpWebRequestまた、以下のサンプルのように、:
例:
var _client = new WebClient();
var _stackContent = _client.DownloadString("http://stackverflow.com");DownloadDataとインスタンスのDownloadFile下にも操作がありWebClientます。これらの一般的な操作は、通常使用するコードも簡素化しますHttpWebRequest。を使用してHttpWebRequest、リクエストの応答を取得し、インスタンス化StreamReaderして応答を読み取り、最後に、結果を必要なタイプに変換する必要があります。ではWebClient、単にを呼び出しますDownloadData, DownloadFile or DownloadString。
ただし、はリクエストするリソースのをWebClient.DownloadString考慮しないことに注意してencodingください。したがって、エンコードと指定しないと、おそらく奇妙な文字を受け取ることになります。
注: 基本的に、「WebClientはWebrequestと比較して数行のコードを必要とします」
webClient.UploadData(url, "POST", bytes)メソッドの指定に使用できました(MSDNドキュメントを参照)。
                    
ServicePointManager.Expect100Continue = false、他の非標準的なことを行い、多くの癖と特異性を持っています。これらの問題を解決するためにRestSharpを起動しました。