Estoy intentando leer un flujo de respuesta HTTP dos veces a través de los siguientes:¿Cómo puedo leer una secuencia de respuesta Http dos veces en C#?
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
stream = response.GetResponseStream();
RssReader reader = new RssReader(stream);
do
{
element = reader.Read();
if (element is RssChannel)
{
feed.Channels.Add((RssChannel)element);
}
} while (element != null);
StreamReader sr = new StreamReader(stream);
feed._FeedRawData = sr.ReadToEnd();
Sin embargo, cuando el código StreamReader ejecuta no hay datos devueltos porque la corriente ha llegado al final. Traté de restablecer el flujo a través de stream.Position = 0 pero esto arroja una excepción (creo que porque la transmisión no puede cambiar su posición manualmente).
Básicamente, me gustaría analizar la secuencia para XML y tener acceso a los datos sin formato (en formato de cadena).
¿Alguna idea?
Una pequeña sugerencia aquí - Veo a menudo llama a buscar en la propiedad Posición sería más simple y más fácil de leer, por ejemplo, ms.Position = 0; Solo una idea para el código futuro. –
Otro comentario: lo anterior no termina cerrando la transmisión entrante, nunca. Podría valer la pena crear un método "CopyAndClose" que * cierre * la secuencia, solo para que pueda mantener la sintaxis de llamada simple. –
Guau, acercándose a mis héroes .. Actualmente estoy leyendo su libro, Sr. Skeet :-) Lo que sugirió sobre el cierre (y diciendo con el nombre del método) es exactamente lo que pensé sobre el código anterior. – VVS