Estoy tratando de utilizar las clases .NET WebRequest/WebResponse para acceder a la API de transmisión de Twitter aquí "http://stream.twitter.com/spritzer.json"
.Lectura de datos de una secuencia HTTP abierta
Necesito poder abrir la conexión y leer datos de forma incremental desde la conexión abierta.
Actualmente, cuando llamo al método WebRequest.GetResponse
, bloquea hasta que se descarga la respuesta completa. Sé que hay un método BeginGetResponse
, pero esto solo hará lo mismo en un hilo de fondo. Necesito tener acceso a la secuencia de respuesta mientras la descarga continúa. Esto simplemente no me parece posible con estas clases.
Hay un comentario específico sobre esto en la documentación Twitter:
"Tenga en cuenta que algunas bibliotecas de cliente HTTP sólo devuelven el cuerpo de la respuesta después de la conexión ha sido cerrada por el servidor Estos clientes no funcionarán para el acceso. Streaming API. Debe usar un cliente HTTP que devolverá datos de respuesta de forma incremental. La mayoría de las sólidas bibliotecas de clientes HTTP proporcionarán esta funcionalidad. El Apache HttpClient manejará este caso de uso, por ejemplo.
Señalan Appache HttpClient, pero eso no ayuda mucho porque necesito usar .NET.
¿Alguna idea si esto es posible con WebRequest/WebResponse
, o tengo que ir para las clases de redes de nivel inferior? ¿Tal vez haya otras bibliotecas que me permitan hacer esto?
Thx Allen
no puedo usar porque WebRequest.BeginGetRequestStream no estoy intentando escribir datos de manera asincrónica en el servidor. Además, en su ejemplo, llama a GetResponse. Es en este punto que WebRequest está bloqueando mientras descarga la respuesta del servidor. Pero la conexión nunca se cierra porque es una corriente de datos interminable. – user108687