2011-01-11 10 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

は、大きな感謝を作品ビジュアルWebデベロッパー2010 Express。 –

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 
関連する問題