2008-09-24 58 views
13

我有一段代碼基本上使用XMLDocument.Load(uri)方法讀取XML文檔,該方法工作正常,但如果通過調用一個代理。XMLDocument.Load(url)通過代理

我想知道是否有人知道通過代理進行此調用(或達到相同效果)的方式?

回答

11

您是否需要向代理提供憑證?

如果是的話,這應該幫助: http://msdn.microsoft.com/en-us/library/aa720674.aspx

基本上 「從文件讀取時供應身份驗證憑據的XmlResolver」 你......

  1. 創建一個XmlTextReader使用URL
  2. 設置閱讀器的XmlResolver的Credentials屬性
  3. 創建一個XmlDocument實例並將閱讀器傳遞給Load方法。
3

您需要使用WebProxy和WebRequest的下載XML,然後解析它。

13

這是我最後使用的代碼:

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); 
+3

見@斯科特的校... – 2011-02-22 20:39:54

11

使用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);