estoy teniendo problemas para leer un "fragmentada" respuesta cuando se utiliza un StreamReader para leer la secuencia devuelta por GetResponseStream() de un HttpWebResponse:lectura "fragmentada" respuesta con HttpWebResponse
// response is an HttpWebResponse
StreamReader reader = new StreamReader(response.GetResponseStream());
string output = reader.ReadToEnd(); // throws exception...
Cuando el método es reader.ReadToEnd()
llamado Recibo la siguiente System.IO.IOException: No se pueden leer datos de la conexión de transporte: La conexión se cerró.
El código anterior funciona bien cuando el servidor devuelve una respuesta "no fragmentada".
La única forma en que he podido hacer que funcione es utilizar HTTP/1.0 para la solicitud inicial (en lugar de HTTP/1.1, el valor predeterminado), pero esto parece ser una solución intermedia.
¿Alguna idea?
@Chuck
Su solución funciona bastante bien. Todavía arroja la misma IOExeception en la última lectura(). Pero después de inspeccionar los contenidos de StringBuilder parece que se han recibido todos los datos. Así que quizás solo tenga que ajustar Read() en un try-catch y tragar el "error".
para leer la respuesta fragmentada, es necesario seguir http://en.wikipedia.org/wiki/Chunked_transfer_encoding –
que estoy viendo este comportamiento con .NET 4.6 conectando a la API REST HTTP de PowerDNS 3.4.5. Las soluciones no ayudan. Si me trago la excepción, pierdo parte de la respuesta. –