Как перестать получать ответ при отправке запроса на webServer от Httpwebrequest - PullRequest
1 голос
/ 09 марта 2012

Я использую для отправки запроса POST и получения ответа следующим образом:

response = (HttpWebResponse)request.GetResponse();

Но, я просто хочу отправить запрос, мне все равно, какой ответ.Размер пакета ответа может быть до 500Kb ~ 1Mb, это тратит много времени.Как я могу отправить запрос, а затем прекратить получать ответ немедленно.Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 09 марта 2012

Если ваша единственная проблема - это время, необходимое для получения ответа, а не используемая полоса пропускания, вы можете получить ответ асинхронно.

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx

Приведенный пример:немного сложно, но общая идея заключается в том, что ваша программа не будет ждать загрузки ответа при вызове BeginGetResponse, как если бы вы только что вызвали GetResponse.Первый метод, который вы передаете в BeginGetResponse, - это имя метода (называемого «обратным вызовом»), который будет вызван, когда в итоге ответ будет полностью загружен.Это место, куда вы положили бы свой код, чтобы проверить код ответа HTTP, если вы позаботились об этом.Второй параметр - это объект «состояние», который передается в ваш метод обратного вызова.Мы будем использовать это, чтобы убедиться, что все очищено должным образом.

Это будет выглядеть примерно так:

    private void YourMethod()
    {
        // Set up your request as usual.
        request.BeginGetResponse(DownloadComplete, request);

        // Code down here runs immediately, without waiting for the response to download
    }

    private static void DownloadComplete(IAsyncResult ar)
    {
        var request = (HttpWebRequest)ar.AsyncState;
        var response = request.EndGetResponse(ar);

        // You can check your response here to make sure everything worked.
    }
0 голосов
/ 09 марта 2012

Я полагаю, вы отправляете запрос GET на сервер.Измените его на запрос HEAD.

var request = System.Net.HttpWebRequest.Create("http://...");
request.Method = "HEAD";
request.GetResponse();

Это вернет только длину содержимого.См. Как получить размер файла из заголовков http для получения дополнительной информации.

...