2012-07-08 140 views
5

我想要做的是,从互联网上获得汇率。 经过长时间的研究,我发现了这个功能。从互联网上获得汇率

protected void Button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
     string xmlResult = null; 
     string url; 
     url = "http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=" + TextBox1.Text + "&ToCurrency=" + TextBox2.Text + ""; 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     StreamReader resStream = new StreamReader(response.GetResponseStream()); 
     XmlDocument doc = new XmlDocument(); 
     xmlResult = resStream.ReadToEnd(); 
     doc.LoadXml(xmlResult); 
     Label1.Text = "Current Exchange Rate for " + TextBox1.Text.ToUpper() + " ---> " + TextBox2.Text.ToUpper() + " value " + doc.GetElementsByTagName("double").Item(0).InnerText; 
     } 
     catch(Exception ex) 
     { 
      Label1.Text="Not a valid Currency or Try again later"; 
     } 
    } 

http://www.webservicex.net/不支持AZN(阿塞拜疆马纳特)以美元,反之亦然转换。我想要做的是,如果有可能连接到互联网并获得利率。否则使用书面函数进行转换(我已经写过)。

你有什么建议,我怎样才能得到美元和AZN的当前汇率(或只是通过发送美元或AZN得到结果)?无论如何要从Windows窗体应用程序中获取它?

回答

0

http://www.webservicex.net/不支持AZN(阿塞拜疆马纳特)以美元,反之亦然

所以呢?计算通过其他货币的交叉汇率。

AZN可能是一种边缘货币,其交易量或暴露量非常有限。询问OANDA(http://www.oanda.com)我收到一些报价,包括美元转换(http://www.oanda.com/currency/cross-rate/result?quotes=GBP &报价= EUR &报价= JPY &报价= CHF &报价= USD &报价= AZN &去=获取+我+表+%3E)

可能的webservicesx.net只是没有价格的东西,出来的主要货币。

使用另一个报价。 FXCM和Oanda可能会有API可供您订购 - 可能与价格有关。

另一种方法是,您可以查看是否可以计算从AZN到另一种货币的交叉价格,如果有价格并从USD到USD。这在外汇交易中经常进行 - 虽然 - 令人满意 - 美元大多不需要交叉汇率计算。

有没有办法从Windows窗体应用程序中获取它?

当你问到互联网上的API时,它是完全不相关的,无论是winforms,webforms,powershell还是VB脚本,API都支持它,你使用的UI技术是无关。

0

也许这会有所帮助。我谷歌,我看到一些替代的网络服务,但我看到的不支持AZN。但是我没有花费大量时间做这件事,那是你的工作。我没有发现这样的:
http://www.transfermate.com/en/free_currency_converter.asp

,您可以添加到您的应用程序,也许通过增加一个浏览器控件和一个自定义网页上嵌入这个和检索的结果,你的主要形式。但最终你自己回答了这个问题:

否则使用书面函数进行转换(我已经写过)。

如果您找不到已经存在的解决方案,请自行构建。

相关搜索: https://developers.google.com/finance/http://openexchangerates.org/

4

这个简单的algorythm会给你所有你在一个键值对列表需要。

public static List<KeyValuePair<string, decimal>> GetCurrencyListFromWeb(out DateTime currencyDate) 
    { 
     List<KeyValuePair<string, decimal>> returnList = new List<KeyValuePair<string, decimal>>(); 
     string date = string.Empty; 
     using (XmlReader xmlr = XmlReader.Create(@"http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml")) 
     { 
      xmlr.ReadToFollowing("Cube"); 
      while (xmlr.Read()) 
      { 
       if (xmlr.NodeType != XmlNodeType.Element) continue; 
       if (xmlr.GetAttribute("time") != null) 
       { 
        date = xmlr.GetAttribute("time"); 
       } 
       else returnList.Add(new KeyValuePair<string, decimal>(xmlr.GetAttribute("currency"), decimal.Parse(xmlr.GetAttribute("rate"), CultureInfo.InvariantCulture))); 
      } 
      currencyDate = DateTime.Parse(date); 
     } 
     returnList.Add(new KeyValuePair<string, decimal>("EUR", 1)); 
     return returnList; 
    } 
+0

有关更深入的解释,请留言。 – Freeman 2012-07-09 11:57:04

+0

不错的一段代码,但是有没有选择通常的'Dictionary <>'的原因? – 2014-12-10 07:13:53