13

我有一些代码基本上使用 XMLDocument.Load(uri) 方法读取 XML 文档,该方法工作正常,但如果通过代理进行调用,则效果不佳。

我想知道是否有人知道通过代理进行此调用(或达到相同效果)的方法?

4

6 回答 6

14

这是我最终使用的代码:

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); 
于 2008-09-24T03:37:52.650 回答
12

使用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);
于 2009-03-17T13:20:57.907 回答
11

您是否必须向代理提供凭据?

如果是这样,这应该会有所帮助:“从文件读取时向 XmlResolver 提供身份验证凭据” http://msdn.microsoft.com/en-us/library/aa720674.aspx

基本上,你...

  1. 使用 URL 创建 XmlTextReader
  2. 设置读取器的 XmlResolver 的 Credentials 属性
  3. 创建一个 XmlDocument 实例并将读取器传递给 Load 方法。
于 2008-09-24T01:54:21.543 回答
6

您不能将 XMLDocument 配置为使用代理。您可以使用 WebRequest 或 WebClient 类通过代理加载数据并将获得的响应流传递给 XMLDocument

您也可以尝试使用 XmlTextReader 类。它允许您设置网络凭据。详情见:

从文件读取时向 XmlResolver 提供身份验证凭据

于 2008-09-24T01:50:12.567 回答
3

您需要使用WebProxy和 WebRequest 来下载 xml,然后对其进行解析。

于 2008-09-24T01:52:51.063 回答
0

实际上,您可以使用 Windows 代理配置,而不是存储在应用程序的设置中。我相信这是现在的标准,因此不必在每个程序中配置代理,即查看 Chrome 的代理指向 Windows 的设置

IWebProxy wp = WebRequest.GetSystemWebProxy();                  
wp.Credentials = WebRequest.GetSystemWebProxy().Credentials;                    
WebClient wc = new WebClient();
wc.Proxy = wp;
于 2020-07-29T07:28:27.767 回答