2013-02-18 4 views
0

Я использую WebClient для получения и отправки запросов. Когда я отправить запрос HTTP на GET данных, как это:получить каждый ответ в Http Get

WebClient client = new WebClient(); 
client.DownloadStringAsync(new Uri(requestUri), "GET"); 

я могу получить данные до 1мин полностью. Я могу получить некоторые данные за 20 секунд, а некоторые другие через 30 секунд и после завершения 1мин. Я хотел бы знать всякий раз, когда получаю данные. У меня есть какое-либо событие в веб-клиенте, чтобы получить байты данных, которые я получаю. Может ли кто-нибудь помочь мне найти решение.

ответ

0

Событие WebClient.DownloadProgressChanged возникает, когда один из методов async получает данные. Тем не менее, нет способа точно определить, какие данные были прочитаны, поэтому это не похоже на то, что это решит вашу проблему.

Если вам нужен полный контроль над запросом, вам придется отказаться от WebClient и работать непосредственно с классом нижнего уровня WebRequest. В частности, вы хотите отправить WebRequest, чтобы получить WebResponse и позвонить по телефону GetResponseStream; возвращенный поток предоставляет асинхронную функциональность, которая позволяет вам делать все, что вам нужно. Недостатком, конечно же, является то, что вам нужно будет организовать все вручную, что будет намного больше, чем две строки кода.

Существует пример того, как это сделать в документах MSDN для WebRequest.BeginGetResponse.

+0

Благодарим вас за ур ответ. В документах MSDN // Завершите асинхронный ответ. myRequestState.response = myWebRequest1.EndGetResponse (asynchronousResult); это означает, что мы завершаем ответ .. но я получу отклик продолжительностью до 1мин .. не могли бы вы объяснить мне .... –

Смежные вопросы