valor - ¿Cómo puedo leer una secuencia de respuesta Http dos veces en C#?
cuantas veces se repite un numero en un arreglo c# (2)
Estoy tratando de leer una secuencia de respuesta Http dos veces a través de lo siguiente:
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 se ejecuta el código de StreamReader no se devuelve ningún dato porque la transmisión ya 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 de XML y tener acceso a los datos sin procesar (en formato de cadena).
¿Algunas ideas?
¿Has intentado restablecer la posición de la secuencia? si esto no funciona, puede copiar la secuencia a un MemoryStream y allí puede restablecer la posición (es decir, a 0) tantas veces como lo desee.
Cópielo en un nuevo MemoryStream primero. Luego puede volver a leer el MemoryStream tantas veces como desee:
Stream responseStream = CopyAndClose(resp.GetResponseStream());
// Do something with the stream
responseStream.Position = 0;
// Do something with the stream again
private static Stream CopyAndClose(Stream inputStream)
{
const int readSize = 256;
byte[] buffer = new byte[readSize];
MemoryStream ms = new MemoryStream();
int count = inputStream.Read(buffer, 0, readSize);
while (count > 0)
{
ms.Write(buffer, 0, count);
count = inputStream.Read(buffer, 0, readSize);
}
ms.Position = 0;
inputStream.Close();
return ms;
}