2011-01-11 6 views
4

다음 질문에 대한 답변입니다. How to load XML into a DataTable?웹 프록시를 사용하여 인터넷에서 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

이 큰 감사를 작동 비주얼 웹 개발자 2010 익스프레스. –

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 
관련 문제