He hecho esto antes, no con XML, pero con datos que deben ser analizados para cambios de estado para una aplicación. El método HttpWebResponse.GetResponseStream() funcionó bien para esto. Asegúrese de llamar a Close() en esta secuencia cuando haya terminado. Sugiero un bloqueo final.
HttpWebRequest req;
try
{
req = (HttpWebRequest)WebRequest.Create("http://www.example.com");
Stream stream = req.GetResponseStream();
byte[] data = new byte[4096];
int read;
while ((read = data.Read(data, 0, data.Length)) > 0)
{
Process(data, read);
}
}
finally
{
if (req != null)
req.Close();
}
O, alternativamente:
HttpWebRequest req;
try
{
req = (HttpWebRequest)WebRequest.Create("http://www.example.com");
Stream stream = req.GetResponseStream();
XmlTextReader reader = new XmlTextReader(stream);
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name);
break;
case XmlNodeType.Text:
Console.Write(reader.Value);
break;
case XmlNodeType.CDATA:
Console.Write("<![CDATA[{0}]]>", reader.Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
Console.Write("<!--{0}-->", reader.Value);
break;
case XmlNodeType.XmlDeclaration:
Console.Write("<?xml version='1.0'?>");
break;
case XmlNodeType.Document:
break;
case XmlNodeType.DocumentType:
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference:
Console.Write(reader.Name);
break;
case XmlNodeType.EndElement:
Console.Write("</{0}>", reader.Name);
break;
}
}
}
finally
{
if (req != null)
req.Close();
}
Creo que hay algunas pequeñas correcciones necesarias para que el código funcione. No hay un método 'HttpWebRequest.GetResponseStream()'. Necesitas obtener un objeto 'HttpWebResponse' usando' HttpWebRequest.GetResponse() 'y llamar' GetResponseStream() 'sobre eso. También en el bloque 'finally'' req' no se debe utilizar, sino la 'Respuesta' mencionada anteriormente. – scherand
de acuerdo, lo escribí en la memoria, no en un proyecto real. – esac
¿Cómo funcionaría esto con XML? El XML no sería válido hasta que todo el documento xml se haya descargado, lo que de alguna manera frustra el propósito de la transmisión. – swestner