gpt4 book ai didi

C# - 如何通过 HTTP 读取连续的 XML 流

转载 作者:数据小太阳 更新时间:2023-10-29 01:47:10 24 4
gpt4 key购买 nike

我正在尝试找出从服务中使用连续的 XML 数据流的最佳方法,该服务通过 HTTP 将数据作为“恒定”提要发送。

我正在考虑使用 HttpWebRequest/Response,但我不确定如果数据只是连续流,它会如何表现。

有什么想法吗?

最佳答案

我以前做过这个,不是用 XML,而是用需要为应用程序的状态变化解析的数据。 HttpWebResponse.GetResponseStream() 方法对此效果很好。确保在完成后在此流上调用 Close()。我建议使用 finally block 。

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();
}

或者,或者:

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();
}

关于C# - 如何通过 HTTP 读取连续的 XML 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/775574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com