通过代理的XMLDocument.Load(url)
时间:2020-03-06 14:38:15 来源:igfitidea点击:
我有一些代码基本上使用XMLDocument.Load(uri)方法读取XML文档,该方法可以正常工作,但是如果通过代理进行调用则无法很好地工作。
我想知道是否有人知道通过代理进行此调用(或者达到相同效果)的方法?
解决方案
我们不能将XMLDocument配置为使用代理。我们可以使用WebRequest或者WebClient类通过代理加载数据,并将获得的响应流传递给XMLDocument
我们也可以尝试使用XmlTextReader类。它允许我们设置网络凭据。有关详细信息,请参见:
从文件读取时向XmlResolver提供身份验证凭据
我们需要使用WebProxy和WebRequest下载xml,然后进行解析。
我们是否必须向代理提供凭据?
如果是这样,这应该会有所帮助:
"从文件读取时向XmlResolver提供身份验证凭据"
http://msdn.microsoft.com/en-us/library/aa720674.aspx
基本上,你...
- 使用URL创建一个XmlTextReader
- 设置读者的XmlResolver的Credentials属性
- 创建一个XmlDocument实例,并将阅读器传递给Load方法。
这是我最终使用的代码:
WebProxy wp = new WebProxy(Settings.Default.ProxyAddress); wp.Credentials = new NetworkCredential(Settings.Default.ProxyUsername, Settings.Default.ProxyPassword); WebClient wc = new WebClient(); wc.Proxy = wp; MemoryStream ms = new MemoryStream(wc.DownloadData(url)); XmlTextReader rdr = new XmlTextReader(ms); return XDocument.Load(rdr);
使用lomaxx的答案,但要更改
MemoryStream ms = new MemoryStream(wc.DownloadData(url)); XmlTextReader rdr = new XmlTextReader(url);
到
MemoryStream ms = new MemoryStream(wc.DownloadData(url)); XmlTextReader rdr = new XmlTextReader(ms);