我正在执行将实时 xml 文件(从实时 url)加载到 XmlDataDocument 的任务,但每次我都会收到错误:
操作已超时
代码如下,包含xml feeds的url,我想将其加载到xmlDoc中。
XmlDataDocument xmlDoc = new XmlDataDocument();
xmlDoc.Load("http://www.globalgear.com.au/productfeed.xml");
请提出任何解决方案。
不要直接使用XmlDataDocument类的Load方法;当涉及长时间运行的 HTTP 请求时,您几乎没有办法影响行为。
相反,请使用 HttpWebRequest 和 HttpWebResponse 类来为您完成这项工作,然后将后续响应加载到文档中。
例如:
HttpWebRequest rq = WebRequest.Create("http://www.globalgear.com.au/productfeed.xml") as HttpWebRequest;
//60 Second Timeout
rq.Timeout = 60000;
//Also note you can set the Proxy property here if required; sometimes it is, especially if you are behind a firewall - rq.Proxy = new WebProxy("proxy_address");
HttpWebResponse response = rq.GetResponse() as HttpWebResponse;
XmlTextReader reader = new XmlTextReader(response.GetResponseStream());
XmlDocument doc = new XmlDocument();
doc.Load(reader);
我已在本地应用程序实例中测试了此代码,并且 XmlDocument 中填充了 URL 中的数据。
您还可以用 XmlDataDocument 替换上面示例中的 XmlDocument - 我更喜欢使用 XmlDocument,因为它(尚未)未标记为过时。
我已将其封装在一个函数中供您使用:
public XmlDocument GetDataFromUrl(string url)
{
XmlDocument urlData = new XmlDocument();
HttpWebRequest rq = (HttpWebRequest)WebRequest.Create(url);
rq.Timeout = 60000;
HttpWebResponse response = rq.GetResponse() as HttpWebResponse;
using (Stream responseStream = response.GetResponseStream())
{
XmlTextReader reader = new XmlTextReader(responseStream);
urlData.Load(reader);
}
return urlData;
}
只需使用以下方式调用:
XmlDocument document = GetDataFromUrl("http://www.globalgear.com.au/productfeed.xml");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)