我正在执行将live xml文件(从live url)加载到XmlDataDocument的任务,但每次我收到错误时:
操作已超时
代码如下,包含xml提要的url,我想将其加载到xmlDoc中.
XmlDataDocument xmlDoc = new XmlDataDocument();
xmlDoc.Load("http://www.globalgear.com.au/productfeed.xml");
Run Code Online (Sandbox Code Playgroud)
请建议任何解决方案.
das*_*ash 20
不要直接使用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);
Run Code Online (Sandbox Code Playgroud)
我在本地应用程序实例中测试了此代码,并使用URL中的数据填充XmlDocument.
你也可以在上面的例子中用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;
}
Run Code Online (Sandbox Code Playgroud)
只需拨打电话:
XmlDocument document = GetDataFromUrl("http://www.globalgear.com.au/productfeed.xml");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9579 次 |
| 最近记录: |