2011-01-11 61 views
4

這是這個問題的後續行動:How to load XML into a DataTable?如何使用Web代理從互聯網讀取XML?

我想讀取一個在互聯網上的XML文件到一個DataTable。 XML文件是在這裏:http://rates.fxcm.com/RatesXML

如果我做的:

public DataTable GetCurrentFxPrices(string url) 
{ 
    WebProxy wp = new WebProxy("http://mywebproxy:8080", true); 
    wp.Credentials = CredentialCache.DefaultCredentials; 
    WebClient wc = new WebClient(); 
    wc.Proxy = wp; 
    MemoryStream ms = new MemoryStream(wc.DownloadData(url)); 
    DataSet ds = new DataSet("fxPrices"); 
    ds.ReadXml(ms); 
    DataTable dt = ds.Tables["Rate"]; 
    return dt; 
} 

它工作正常。我正在爲如何使用Internet Explorer中的默認代理服務器而苦苦掙扎。我不想對代理進行硬編碼。如果在Internet Explorer中沒有指定代理,我也希望代碼能夠工作。

回答

2

您可以使用Console.WriteLine(System.Net.WebProxy.GetDefaultProxy()。Address.AbsoluteUri); ...

+0

作品十分感謝,但我得到一個警告,它在棄用Visual Web Developer 2010 Express。 – 2011-01-11 13:54:12

2

將以下設置添加到您的app.config/web.config中自動使用系統默認代理:

<system.net> 
    <defaultProxy useDefaultCredentials="true"/> 
</system.net> 
1
#region Function to get x-rate via proxy 
public string fncProxyGetRate(string countryCode)// use 'GBP' for British Pounds 
{ 
    string rtnTxt = ""; 
    try 
    { 
     string url = "http://rss.timegenie.com/forex.xml"; 
     string proxyUrl = "http://xxx.xxx.x.x:8080/"; 
     string myXratePath = "/forex/data/code[text()='" + countryCode + "']"; 

     WebProxy wp = new WebProxy(proxyUrl, true); 
     wp.Credentials = CredentialCache.DefaultCredentials; 
     WebClient wc = new WebClient(); 
     wc.Proxy = wp; 

     MemoryStream ms = new MemoryStream(wc.DownloadData(url)); 
     XmlTextReader rdr = new XmlTextReader(ms); 

     XmlDocument doc = new XmlDocument(); 
     doc.Load(rdr); 

     rtnTxt = doc.SelectSingleNode(myXratePath).ParentNode.SelectSingleNode("rate").InnerXml; 
    } 
    catch (Exception ex) 
    { 
     rtnTxt = ex.Message; 
    } 
    return rtnTxt; 
} 
#endregion