Я пытаюсь использовать классы .NET WebRequest/WebResponse для доступа к API потоковой передачи Twitter здесь "http://stream.twitter.com/spritzer.json"
.Чтение данных из открытого HTTP-потока
Мне нужно иметь возможность открывать соединение и читать данные пошагово от открытого соединения.
В настоящее время, когда я вызываю метод WebRequest.GetResponse
, он блокируется до тех пор, пока не будет загружен весь ответ. Я знаю, что есть метод BeginGetResponse
, но это будет делать то же самое в фоновом потоке. Мне нужно получить доступ к потоку ответов во время загрузки. Мне это не кажется возможным с этими классами.
Существует конкретный комментарий по этому поводу в документации Twitter:
«Пожалуйста, обратите внимание, что некоторые клиентские библиотеки HTTP возвращают только тело ответа после того, как соединение было закрыто сервером Эти клиенты не будут работать для доступа. Streaming API. Вы должны использовать HTTP-клиент, который будет постепенно возвращать данные ответа. Большинство надежных клиентских библиотек HTTP предоставят эту функцию. Например, Apache HttpClient будет обрабатывать этот вариант использования ».
Они указывают на Appache HttpClient, но это мало помогает, потому что мне нужно использовать .NET.
Любые идеи, возможно ли это с помощью WebRequest/WebResponse
, или мне нужно идти на сетевые классы более низкого уровня? Может быть, есть другие библиотеки, которые позволят мне это сделать?
Thx Allen
я не могу использовать WebRequest.BeginGetRequestStream, потому что я Я не пытаюсь записывать данные асинхронно на сервер. Кроме того, в вашем примере вы вызываете GetResponse. Именно в этот момент WebRequest блокируется, пока он загружает ответ сервера. Но соединение никогда не закрывается, потому что это эффективно бесконечный поток данных. – user108687