HttpWebRequest и Response для чтения больших потоков - PullRequest
0 голосов
/ 13 марта 2011

У меня есть требование, когда мне нужно читать большой поток или данные с веб-сервера.Это не потоковая передача, а чтение больших данных частями со стороны клиента.

Для этого я создаю веб-запрос Http.Ниже приведен пример кода ..

StreamingObject streamObj = null;
using (HttpWebRequest httpReq = WebRequest.Create(uri))
{
    HttpWebResponse response = httpReq.GetRespons();
    Stream responseStream = response.GetStream();

    streamObj = new StreamingObject(response, responseStream);
}
return streamObj;

В своем коде я делаю Http-веб-запрос к данному Uri.Затем я получаю HttpWebResponse и поток ответов.Создайте экземпляр StreamingObject, который является классом-оберткой для хранения ответа Http и потока ответов.

Я удалил Http Web Request.Клиенту предоставляется StreamingObject, а у объекта потоковой передачи есть один метод GetStream, который возвращает базовый поток ответа.Когда StreamingObject располагается, ответ Http и поток располагаются.

Причиной введения StreamingObject было то, что ответ Http должен оставаться открытым для доступа к базовому потоку.

Я хотел бы знать, является ли это правильным подходом или существует более простой способ сделать это.

1 Ответ

0 голосов
/ 13 марта 2011

Я бы посоветовал не выбрасывать объект HttpWebRequest, потому что он вполне может понадобиться. Просто добавьте его к StreamingObject и утилизируйте его, когда утилизируете StreamingObject. Например, я обнаружил, что если я хочу преждевременно закрыть поток ответов, ответ будет зависать до тех пор, пока все данные не будут прочитаны. Но вызов Abort для объекта запроса немедленно закроет поток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...