Developer29 Ответов: 3

Как получить курс обмена валюты в ASP.NET


Привет, я новичок на платформе dotnet...Я хочу знать код курса обмена валюты в asp. net..может ли кто-нибудь мне помочь?

Что я уже пробовал:

это код веб-службы..Он выдает ошибку ввода строки не в правильном формате...или же предлагает другой код.

namespace Currency_Exchange
{
    /// <summary>
    /// Summary description for WebService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService : System.Web.Services.WebService
    {

        [WebMethod]
        public string CurrencyConversion(decimal amount, string fromCurrency, string toCurrency)
        {
            WebClient web = new WebClient();
            string url = string.Format("https://www.google.com/finance/converter?fromCurrency={0}&toCurrency={1}", fromCurrency.ToUpper(), toCurrency.ToUpper(), amount);
            string response = web.DownloadString(url);
            Regex regex = new Regex(@":(?<rhs>.+?),");
            string[] arrDigits = regex.Split(response);
            string rate = arrDigits[3];
            return rate;
        }
    }
}

3 Ответов

Рейтинг:
8

Bryian Tan

Вот как, по моему мнению, должен выглядеть код, основанный на последнем коде, который вы разместили здесь.

страница ASPX

<asp:Label ID="lbl_Amount" runat="server" Text="Amount"></asp:Label>
<asp:TextBox ID="txt_amount" runat="server"></asp:TextBox>

<asp:Label ID="lbl_FromCurrency" runat="server" Text="From Currency"></asp:Label>
<asp:TextBox ID="txt_fromCurrency" runat="server"></asp:TextBox>

<asp:Label ID="lbl_toCurrency" runat="server" Text="To Currency"></asp:Label>
<asp:TextBox ID="txt_ToCurrency" runat="server"></asp:TextBox>
<asp:Label ID="lbl_value" runat="server" Text=""></asp:Label>
<asp:Button ID="Btn_Convert" runat="server" Text="Convert" OnClick="Convert"/>

<asp:Label ID="lblResult" runat="server" Text=""></asp:Label>


.cs / код позади
public string CurrencyConversion(decimal amount, string fromCurrency, string toCurrency)
        {
            WebClient web = new WebClient();
            string url = string.Format("https://www.google.com/finance/converter?from={0}&to={1}&a={2}", fromCurrency.ToUpper(), toCurrency.ToUpper(), amount);
            string response = web.DownloadString(url);
            Regex regex = new Regex("<span class=bld>(.*?)</span>");

            var result = regex.Match(response).Groups[1].Value;
            return string.Format("{0} {1} = {2}", amount, fromCurrency, result);
        }

        protected void Convert(object sender, EventArgs e)
        {
            lblResult.Text = CurrencyConversion ( decimal.Parse(txt_amount.Text), txt_fromCurrency.Text, txt_ToCurrency.Text);
        }


Developer29

Спасибо....Его работа

Рейтинг:
1

Bryian Tan

Интересно, я не могу понять, как вы заставляете код работать. Есть несколько вопросов,

1. отсутствующий параметр количества, также упомянутый @ppolymorphe
2. валюта toCurrency должна быть
3. валюта fromCurrency должна быть от
4. я предполагаю, что регулярное выражение должно извлекать выходные данные из конвертера?

Вот мой код.

string url = string.Format("https://www.google.com/finance/converter?from={0}&to={1}&a={2}", "AED", "ANG", 1);
            string response = web.DownloadString(url);
            Regex regex = new Regex("<span class=bld>(.*?)</span>");

            var result = regex.Match(response).Groups[1].Value;

выход: 0.4874 Анг

Вот HTML-разметка от Google converter, если вы хотите знать, как я получаю регулярное выражение.

<div id=currency_converter_result>1 AED = <span class=bld>0.4874 ANG</span>


Вот несколько примеров :
https://www.google.com/finance/converter?from=SGD&to=SKK& a=1
https://www.google.com/finance/converter?from=USD& to=CNY& a=100

Вот так будет выглядеть новый метод CurrencyConversion.
public string CurrencyConversion(decimal amount, string fromCurrency, string toCurrency)
        {
            WebClient web = new WebClient();
            string url = string.Format("https://www.google.com/finance/converter?from={0}&to={1}&a={2}", fromCurrency.ToUpper(), toCurrency.ToUpper(), amount);
            string response = web.DownloadString(url);
            Regex regex = new Regex("<span class=bld>(.*?)</span>");

            var result = regex.Match(response).Groups[1].Value;
            return result;
        }


Developer29

код, приведенный выше, не отображает вывод.... но никакой ошибки...страница загружается

Bryian Tan

Ну, трудно догадаться, что ты делаешь. Я предполагаю, что вы не изменили метод CurrencyConversion правильно? во всяком случае, здесь я думаю, что новый метод должен выглядеть так.

public string CurrencyConversion(десятичная сумма, строка fromCurrency, строка toCurrency)
{
Веб-клиент веб = новый Вебклиент();
string url = строка.Формат ("https://www.google.com/finance/converter?from={0}& to={1}& a={2}", fromCurrency.ToUpper (), toCurrency.ToUpper (), сумма);
строковый ответ = web.DownloadString(url);
Регулярное выражение регулярное выражение = новое регулярное выражение ("в<промежуток класс=стр.&ГТ;(.*?)&ЛТ;/службы&ГТ;");

var result = регулярное выражение.Совпадение (ответ).Группы[1]. Значение;
возвращаемый результат;
}

Developer29

код ASP

&ЛТ;АСП:метка идентификатор="lbl_Amount" атрибут runat="сервер" текст="сумма"и GT;
&ЛТ;АСП:текстовое поле с ID="txt_amount" атрибут runat="сервер"и GT;

&ЛТ;АСП:метка идентификатор="lbl_FromCurrency" атрибут runat="сервер" текст="валюта"и GT;
&ЛТ;АСП:текстовое поле с ID="txt_fromCurrency" атрибут runat="сервер"и GT;

&ЛТ;АСП:метка идентификатор="lbl_toCurrency" атрибут runat="сервер" текст="валюта"и GT;
&ЛТ;АСП:текстовое поле с ID="txt_ToCurrency" атрибут runat="сервер"и GT;
&ЛТ;АСП:метка идентификатор="lbl_value" атрибут runat="сервер" текст=""&ГТ;
&ЛТ;АСП:кнопка ID="Btn_Convert" атрибут runat="сервер" текст="конвертации" функция onclick="преобразовать"/&ГТ;




Код C#

общественные строку преобразовать(десятичное количество, fromCurrency строку, строку toCurrency)
{

// string url = строка.Формат ("https://www.google.com/finance/converter?from={0}& to={1}& a={2}", fromCurrency.ToUpper (), toCurrency.ToUpper (), сумма);
string url = строка.Формат ("https://www.google.com/finance/converter?a={2}& from={0}& to={1}", txt_fromCurrency, txt_ToCurrency, txt_amount);
Веб-клиент веб = новый Вебклиент();
строковый ответ = web.DownloadString(url);
Regex regex = новое регулярное выражение (" (.*?)");

var result = регулярное выражение.Совпадение (ответ).Группы[1]. Значение;
возвращаемый результат;
}


Это мой код

Рейтинг:
0

Patrice T

Проблема может заключаться в том, как вы строите URL-адрес

string url = string.Format("https://www.google.com/finance/converter?fromCurrency={0}&toCurrency={1}", fromCurrency.ToUpper(), toCurrency.ToUpper(), amount);

У тебя есть amount как третье значение, но где оно {2} ?


Developer29

я уже добавил веб-ссылку в Обозреватель решений...Но я не могу использовать пространство имен webservice в своем проекте...можете ли вы четко сказать, как добавить webserivce в нашу программу

Patrice T

Извините, ничем не могу вам помочь.