2012-07-08 14 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 (अज़रबैजानी Manat) का समर्थन नहीं करता। मैं क्या करना चाहता हूं, यदि यह संभव है तो इंटरनेट से कनेक्ट हो और दरें प्राप्त करें। अन्यथा रूपांतरण के लिए लिखित फ़ंक्शन का उपयोग करें (मैंने पहले ही लिखा है)।

आप क्या सलाह देते हैं, मैं यूएसडी और एजेडएन के लिए वर्तमान दरें कैसे प्राप्त कर सकता हूं (या केवल यूएसडी या एजेडएन भेजकर परिणाम प्राप्त कर सकता हूं)? क्या विंडोज़ फॉर्म के अंदर से इसे पाने के लिए वैसे भी है?

उत्तर

0

लेकिन http://www.webservicex.net/ डालर की AZN (अज़रबैजानी Manat) का समर्थन नहीं करता है और इसके विपरीत

तो? किसी अन्य मुद्रा के माध्यम से जाने वाली क्रॉस दर की गणना करें।

एजेडएन बहुत सीमित मात्रा या एक्सपोजर के साथ एक फ्रिंज मुद्रा की संभावना है। ओंदा से पूछना (http://www.oanda.com) मुझे कुछ उद्धरण मिल रहे हैं, जिसमें एक यूएसडी रूपांतरण (http://www.oanda.com/currency/cross-rate/result?quotes=GBP & उद्धरण = EUR & उद्धरण = JPY & उद्धरण = CHF & उद्धरण = अमरीकी डालर & उद्धरण = AZN & कुछ के लिए = प्राप्त करें + मेरी + तालिका +% 3E)

संभावना webservicesx.net सिर्फ कोई मूल्य नहीं हैं जाना है कि मुख्य मुद्राओं से बाहर।

एक और उद्धरण का उपयोग करें। एफएक्ससीएम और ओंदा में एपीआई हो सकती है जो आप सब्सक्राइब कर सकते हैं - कीमत के मुकाबले।

वैकल्पिक आप देख सकते हैं कि क्या आप एजेडएन से दूसरे मुद्रा में क्रॉस-गो की गणना कर सकते हैं यदि कोई कीमत है और वहां से अमरीकी डालर है। यह अक्सर विदेशी मुद्रा में किया जाता है - सहमत - यूएसडी ज्यादातर पार दर गणना की आवश्यकता में नहीं है।

क्या विंडोज़ फॉर्म के अंदर से इसे प्राप्त करने के लिए वैसे भी है?

जब आप इंटरनेट पर एक API के बारे में पूछते हैं, तो यह पूरी तरह से अप्रासंगिक है कि क्या यह WinForms, webforms, powershell या एक vb स्क्रिप्ट, या तो एपीआई का समर्थन करता है, या नहीं, और यूआई प्रौद्योगिकी आप का उपयोग है है अप्रासंगिक।

0

शायद इससे मदद मिलेगी। मैंने Google'd और मैंने कुछ वैकल्पिक वेब सेवाओं को देखा, लेकिन जिन पर मैंने देखा वह एजेडएन का समर्थन नहीं करता था। लेकिन मैंने ऐसा करने में बहुत समय व्यतीत नहीं किया, यह तुम्हारा काम है। मैं इस मिला:
http://www.transfermate.com/en/free_currency_converter.asp

आप शायद एक ब्राउज़र नियंत्रण जोड़ने और एक कस्टम पृष्ठ पर इस embedding और अपने मुख्य फार्म के लिए परिणामों को प्राप्त करने पर, आपकी ऐप्लिकेशन को जोड़ सकते हैं। लेकिन आखिरकार, आपने स्वयं प्रश्न का उत्तर दिया:

अन्यथा रूपांतरण के लिए लिखित फ़ंक्शन का उपयोग करें (मैंने पहले ही लिखा है)।

यदि आप पहले से ही कोई समाधान नहीं ढूंढ पा रहे हैं, तो इसे स्वयं बनाएं।

भी आज़माएं: 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

+0

कोड का अच्छा टुकड़ा, लेकिन क्या सामान्य 'शब्दकोश <> 'नहीं चुनने का कोई कारण है? –

संबंधित मुद्दे