web-dev-qa-db-ja.com

C#-HTTP呼び出しを行う方法

WebサイトにHTTP呼び出しを行いたいと思いました。 URLにアクセスするだけで、データをアップロードまたはダウンロードしたくありません。それを行う最も簡単で最速の方法は何ですか。

私はコードの下で試してみましたが、その速度は遅く、2回目の繰り返し要求の後、59秒のタイムアウトになり、再開します:

WebRequest webRequest = WebRequest.Create("http://ussbazesspre004:9002/DREADD?" + fileName);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = fileName.Length;

Stream os = webRequest.GetRequestStream();
os.Write(buffer, 0, buffer.Length);
os.Close();

WebClientの使用はより効率的ですか?

WebClient web = new WebClient();
web.UploadString(address);

.NET ver 3.5を使用しています

27
Mayur J

あなたが本当にウェブサイトに電話をかけようとしているなら、あなたはそこにいくつかの余分なものを持っています。必要なものは次のとおりです。

WebRequest webRequest = WebRequest.Create("http://ussbazesspre004:9002/DREADD?" + fileName);
WebResponse webResp = webRequest.GetResponse();

応答を待ちたくない場合は、 BeginGetResponse を見て非同期にすることができます。

48
Doozer Blake

データをアップロードしたくない場合は、以下を使用する必要があります。

_webRequest.Method = "GET";
_

データを取り戻すことに本当に関心がない場合(たとえば、ページが使用可能かどうかを確認するだけの場合)は、次を使用します。

_webRequest.Method = "HEAD";
_

いずれの場合も、webRequest.GetRequestStream()の代わりに以下を使用します。

_WebResponse myWebResponse = webRequest.GetResponse();
_
10
Waylon Flinn

WebClientはより短く、より簡潔な構文ですが、裏ではWebRequestを使用するため、パフォーマンスの観点からは高速ではなく、同等です。より高速にしたい場合は、サーバー側のスクリプトまたはネットワークインフラストラクチャを改善する必要があります。問題はクライアント側ではありません。

5
Darin Dimitrov