2011-05-20 76 views
1

我想讀取一些外部xml,但我必須通過代理連接,但我不知道如何去做。我有以下代碼中,xmlurl包含對外部XML路徑:通過代理讀取外部XML

       if (content > 0) 
          { 
           using (XmlTextReader xml = new XmlTextReader(xmlurl)) 
           { 
            while (xml.Read()) 
            { 
             Console.WriteLine(xml.Name); 
            } 
           } 
          } 

我有以下代理代碼爲另一個HttpWebRequest一塊我:

if(Convert.ToBoolean(ConfigurationManager.AppSettings["behindproxy"]) == true) 
           { 
            WebProxy proxy = new WebProxy(); 
            Uri proxyUri = new Uri("srvisa01"); 
            proxy.Address = proxyUri; 
            proxy.BypassProxyOnLocal = true; 
            proxy.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["proxyusername"].ToString(), ConfigurationManager.AppSettings["proxypassword"].ToString()); 

}

但我在這種情況下,我不確定這會起作用。

幫助讚賞。

親切的問候

克里斯

+0

你需要特定的憑證或偷看會[添加代理配置](http://msdn.microsoft.com/en-us/library/dkwyc043.aspx)到你的app.config是否足夠? – Filburt 2011-05-20 14:35:41

+0

不幸的是,具體的憑據使事情變得棘手。我確實找到這個網站:http://msdn.microsoft.com/en-us/library/aa720674.aspx#Y103但我無法讓代碼工作... – dooburt 2011-05-20 14:57:40

回答

3

我找到了這個問題的答案與一些被確定谷歌搜索:

XmlTextReader xml; 
         WebRequest web; 

         web = WebRequest.Create(xmlurl); 
         if(Convert.ToBoolean(ConfigurationManager.AppSettings["behindproxy"].ToString())) 
         { 
          WebProxy prxy = new WebProxy(); 
          Uri prxyUri = new Uri("http://xxx:8080"); 

          prxy.Address = prxyUri; 
          prxy.BypassProxyOnLocal = true; 
          prxy.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["proxyusername"].ToString(), ConfigurationManager.AppSettings["proxypassword"].ToString()); 
          web.Proxy = prxy; 
         } 

         var response = web.GetResponse().ToString(); 
         xml = new XmlTextReader(response); 

希望這個答案可以幫助:)