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 (アゼルバイジャン マナト) から米ドルへの変換、およびその逆の変換はサポートされていません。私がしたいのは、インターネットに接続して料金を取得できる場合です。それ以外の場合は、変換のために書かれた関数を使用します(私はすでに書いています)。

USD と AZN の現在のレートを取得するにはどうすればよいですか (または単に USD または AZN を送信して結果を取得するか)、アドバイスはありますか? Windowsフォームアプリケーション内から取得する方法はありますか?

4

3 に答える 3

4

この単純なアルゴリズムにより、キーと値のペア リストで必要なものがすべて得られます。

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;
    }
于 2012-07-09T11:56:13.757 に答える
0

多分これが役立つでしょう。Google で検索したところ、代替の Web サービスがいくつかありましたが、調べたものは AZN をサポートしていませんでした。しかし、私はそれをするのに多くの時間を費やしませんでした。それはあなたの仕事です。私はこれを見つけました:
http://www.transfermate.com/en/free_currency_converter.asp

ブラウザー コントロールを追加してカスタム ページに埋め込み、結果をメイン フォームに取得することで、アプリケーションに追加できます。しかし、最終的には、あなた自身が質問に答えました:

それ以外の場合は、変換のために書かれた関数を使用します(私はすでに書いています)。

解決策が見つからない場合は、自分で構築してください。

こちらもお試しください: https://developers.google.com/finance/およびhttp://openexchangerates.org/

于 2012-07-08T16:29:05.603 に答える
0

ただし、http: //www.webservicex.net/ は AZN (アゼルバイジャン マナト) から米ドルへ、およびその逆をサポートしていません。

そう?別の通貨を通過するクロス レートを計算します。

AZN は、ボリュームやエクスポージャーが非常に限られているフリンジ通貨である可能性があります。OANDA に問い合わせる (http://www.oanda.com) USD 換算を含むいくつかの見積もりを取得しています (http://www.oanda.com/currency/cross-rate/result?quotes=GBP"es=EUR"es=JPY"es= CHF"es=USD"es=AZN&go=Get+my+Table+%3E)

おそらく webservicesx.net には、主要な通貨以外の価格がありません。

別の引用を使用します。FXCM と Oanda には、サブスクライブできる API がある場合があります。

別の方法として、クロスを計算できるかどうかを確認できます。価格がある場合は AZN から別の通貨に移動し、そこから USD に移動します。これは FOREX で頻繁に行われますが、賛成です - USD はほとんどの場合、クロス レート計算を必要としません。

Windowsフォームアプリケーション内から取得する方法はありますか?

インターネットで API について尋ねる場合、それが winforms、webforms、powershell、vb スクリプトのいずれであるか、API がサポートしているかどうか、使用する UI テクノロジはまったく関係ありません。

于 2012-07-08T16:04:29.460 に答える