2012-07-08 29 views
5

Điều tôi muốn làm là nhận tỷ giá hối đoái từ internet. Tôi tìm thấy chức năng này sau khi nghiên cứu dài.Nhận tỷ giá hối đoái từ internet

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

Nhưng http://www.webservicex.net/ không hỗ trợ AZN (Azerbaijan Manat) để usd và chuyển đổi ngược lại. Những gì tôi muốn làm là, nếu nó có thể kết nối với internet và nhận được mức giá. Khác sử dụng chức năng viết để chuyển đổi (tôi đã viết).

Bạn có lời khuyên gì, làm cách nào để có được mức giá hiện tại cho USD và AZN (hoặc chỉ nhận kết quả bằng cách gửi USD hoặc AZN)? Có anyway để có được nó từ bên trong Windows ứng dụng hình thức?

Trả lời

0

Nhưng http://www.webservicex.net/ không hỗ trợ AZN (Azerbaijan Manat) để usd và ngược lại

Thì sao? Tính tỷ lệ chéo thông qua một đơn vị tiền tệ khác.

AZN có thể là đơn vị tiền tệ rìa với khối lượng hoặc độ phơi sáng rất hạn chế. Hỏi OANDA (http://www.oanda.com) Tôi nhận được một số trích dẫn, bao gồm chuyển đổi USD (http://www.oanda.com/currency/cross-rate/result?quotes=GBP & báo giá = EUR & dấu ngoặc kép = JPY & dấu ngoặc kép = CHF & dấu ngoặc kép = USD & dấu ngoặc kép = AZN & đi = Nhận + + Bảng của tôi +% 3E)

webservicesx.net có khả năng chỉ không có giá cái gì đó ra khỏi đồng tiền chủ chốt.

Sử dụng một trích dẫn khác. FXCM và Oanda có thể có API của bạn có thể đăng ký - có khả năng chống lại một mức giá.

Cách thay thế bạn có thể xem liệu bạn có thể tính giá trị chéo - từ AZN sang loại tiền khác nếu có giá và từ đó sang USD. Điều này được thực hiện thường xuyên trong FOREX mặc dù - dễ chịu - USD chủ yếu là không cần tính toán tỷ lệ chéo.

Có cách nào để tải ứng dụng từ bên trong ứng dụng biểu mẫu Windows không?

Khi bạn hỏi về API trên internet, điều đó hoàn toàn không liên quan cho dù đó là biểu mẫu winform, biểu mẫu web, PowerShell hoặc vb, API hỗ trợ hay không và Công nghệ giao diện người dùng bạn sử dụng là không liên quan.

0

Có thể điều này sẽ hữu ích. Tôi đã làm như vậy và tôi đã thấy một số dịch vụ web thay thế, nhưng những dịch vụ tôi đã xem không hỗ trợ AZN. Nhưng tôi đã không dành nhiều thời gian để làm điều đó, đó là công việc của bạn. Tôi đã tìm thấy điều này:
http://www.transfermate.com/en/free_currency_converter.asp

mà bạn có thể thêm vào ứng dụng của bạn, có thể bằng cách thêm một điều khiển trình duyệt và nhúng này trên một trang tùy chỉnh và lấy kết quả mẫu chính của bạn. Nhưng cuối cùng, bạn đã tự trả lời câu hỏi:

Khác sử dụng chức năng viết để chuyển đổi (Tôi đã viết).

Nếu bạn không thể tìm thấy giải pháp đã có sẵn, hãy tự xây dựng giải pháp đó.

Cũng thử: https://developers.google.com/finance/http://openexchangerates.org/

4

algorythm đơn giản này sẽ cung cấp cho bạn tất cả những gì bạn cần trong một danh sách cặp giá trị key.

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

để có giải thích chi tiết hơn, hãy để lại lời nhắn. – Freeman

+0

Đoạn mã đẹp, nhưng có lý do nào để không chọn 'Từ điển <> 'bình thường không? –

Các vấn đề liên quan