XMLDocument.Load(url)通过代理
我有一些代码基本上使用XMLDocument.Load(uri)方法读取XML文档,该方法工作正常,但如果通过代理进行调用则不能很好地工作。
我想知道是否有人知道通过代理进行此调用(或达到相同效果)的方法?
您是否必须向代理提供凭据?
如果是这样,这应该有所帮助:“从文件读取时向XmlResolver提供身份validation凭据” 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);
您无法将XMLDocument配置为使用代理。 您可以使用WebRequest或WebClient类通过代理加载数据,并将获得的响应流传递给XMLDocument
您也可以尝试使用XmlTextReader类。 它允许您设置网络凭据。 详情见:
从文件读取时向XmlResolver提供身份validation凭据
您需要使用WebProxy和WebRequest下载xml,然后解析它。