2012-07-08 28 views
5

Chcę otrzymywać kursy wymiany z Internetu. Znalazłem tę funkcję po długim badaniu.Uzyskiwanie kursów wymiany z Internetu

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"; 
     } 
    } 

Ale http://www.webservicex.net/ nie obsługuje AZN (Azerbejdżański manat) do USD i nawrócenia odwrotnie. Chcę tylko, jeśli to możliwe, połączyć się z Internetem i uzyskać stawki. W innym przypadku użyj funkcji pisemnej do konwersji (napisałem już).

Co radzisz, jak uzyskać aktualne stawki dla USD i AZN (lub po prostu uzyskać wynik, wysyłając USD lub AZN)? Czy mimo to można je pobrać z aplikacji formularzy systemu Windows?

Odpowiedz

0

Ale http://www.webservicex.net/ nie obsługuje AZN (Azerbejdżański manat) do USD i odwrotnie

Więc? Oblicz wskaźnik krzyżowy przechodzący przez inną walutę.

AZN jest prawdopodobnie walutą frędzlową z bardzo ograniczoną wolumenem lub ekspozycją. Pytanie do OANDY (http://www.oanda.com) Otrzymuję kilka ofert, w tym konwersję w USD (http://www.oanda.com/currency/crossrate /result?quotes=GBP & quotes = & cytaty = JPY & cytaty = CHF & cytaty = USD & cytaty = AZN & iść = Get + moje + stolik +% 3E)

Prawdopodobny webservicesx.net prostu nie ma ceny za coś, co z głównych walut.

Użyj innej oferty. FXCM i Oanda mogą mieć API, które możesz subskrybować - prawdopodobnie za cenę.

Alternatywnie można sprawdzić, czy można obliczyć cross-przejść z AZN do innej waluty, jeśli istnieje cena, a stamtąd do USD. Robi się to jednak często na FOREX - przyjemny - USD nie wymaga obliczania stopy procentowej.

Czy mimo to można je pobrać z aplikacji formularzy systemu Windows?

Gdy pytasz o API w internecie, to jest zupełnie bez znaczenia, czy jest to WinForm, webforms, PowerShell lub skrypt VB, albo API obsługuje go, czy nie, a technologia UI używasz jest bez znaczenia.

0

Może to pomoże. Ja i Google widzieliśmy kilka alternatywnych usług internetowych, ale te, na które patrzyłem, nie obsługiwały AZN. Ale nie spędziłem dużej ilości czasu na robieniu tego, to jest twoja praca. Znalazłem to:
http://www.transfermate.com/en/free_currency_converter.asp

które można dodać do swojej aplikacji, być może poprzez dodanie formantu przeglądarki i osadzanie tego na stronie niestandardowej i pobierania wyników do głównego formularza. Ale ostatecznie sam odpowiedziałeś na to pytanie:

W innym przypadku użyj funkcji pisemnej do konwersji (napisałem już).

Jeśli nie możesz znaleźć rozwiązania już tam, zbuduj to sam.

Sponsorowane: https://developers.google.com/finance/ i http://openexchangerates.org/

4

Ten prosty algorytm pozwoli Ci dać wszystko, czego potrzeba w liście kluczowej pary wartość.

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

, aby uzyskać bardziej szczegółowe wyjaśnienie, pozostaw wiadomość. – Freeman

+0

Niezły kawałek kodu, ale czy istnieje powód, dla którego nie wybieramy zwykłego 'Dictionary <>'? –

Powiązane problemy