不要直接使用 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");