Как сделать парсинг курса валют в c
Перейти к содержимому

Как сделать парсинг курса валют в c

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

Это наиболее общий функционал, который будет реализован в приложении. Дальнейшая специализация на ваше усмотрение.

Создадим в Visual Studio новое приложение типа ASP.NET Core. Сразу выберем шаблон MVC, чтобы Visual Studio за нас подготовила минимальный необходимый функционал для запуска приложения. Режим аутентификации или защищенное https-соединение в этом примере не используется.

Создаем новое ASP.NET Core MVC приложение

Сразу замечу, что функционал этого примера во многом заточен именно под работу с ЦБ РФ, как источником данных о курсах валют. В работе с ним есть некоторые нюансы, о чем сказано ниже. Если вы хотите брать курсы валют из другого источника, а они в целом более-менее все похожи, то изучите особенности API того сервиса, и в соответствии с этим скорректируйте код приложения.

Ознакомиться с информацией о том, как получать данные от ЦБ РФ, используя XML, можно по этой ссылке: Получение данных, используя XML

Придумаем себе техническое задание, в котором сказано, что основная валюта на сайте – это российские рубли. Также должна быть возможность представить какую-то цену на товар в иностранной валюте, а именно в долларах США, евро или гривнах.

Под это ТЗ создадим простейший класс-модель для того, чтобы работать с данными в объектно-ориентированной манере. Пусть также в обязанности этого класса входит конвертация одной валюты в другую. Для простоты демонстрации нарушим принцип SRP (Single Responsibility Principle).

После того как мы определили модель, реализуем функционал получения курсов валют и обработки их внутри нашего приложения. Для того чтобы этот процесс был автоматизирован и работал фоном с некоторой периодичностью, в ASP.NET Core очень удобно использовать класс BackgroundService , который в свою очередь реализует интерфейс IHostedService .

Создадим свой класс и наследуемся от класса BackgroundService :

* в коде выше добавлены поясняющие комментарии по некоторым неочевидным вопросам, это опять же возвращаясь к тому, что данный пример во многом заточен именно под ЦБ РФ как источник данных курсов валют.

Также не забудем добавить поддержку кэширования в проект и подключим наш CurrencyService как сервис в файле Startup.cs:

На данном этапе если мы запустим приложение на выполнение, то сразу же запустится фоновая задача и произойдет попытка получения данных о курсах валют. После этого класс-модель будет заполнен этими данными и помещен в кэш.

Давайте для примера извлечем нашу модель из кэша в HomeController , и передадим ее в представление Index() :

Как получить курс валюты средствами C#

Как получить курс валюты средствами C#

Одному из наших новых корпоративных сервисов требуется регулярно получать актуальный курс валюты. Нас интересуют евро и доллары, особенно сейчас, когда курс стал резко скакать. Чтобы успевать за обновлениями и освободить вечно занятых сотрудников от этой рутиной операции, было решено автоматизировать этот процесс. К счастью, исходный код проекта у нас имеется.

Особого времени на решения этой задачи не было, и я надеялся, что в сети найдется готовый снипет, способный решить проблему за пару минут. Увы, ни к чему хорошему мои поиски не привели. Варианты, попавшие под зоркий глаз Google, демонстрировали банальный анализ страницы центрального банка с перечнем всех доступных курсов валют при помощи регулярного выражения. Не знаю, зачем авторы этих решений мучились с регулярными выражениями, если сайт центрального банка всегда рад отдать интересующую информацию в виде XML/SOAP.

Вариант с SOAP мне показался более затратным (по времени), поэтому было решено получать все необходимые данные в XML. Для этого требуется сделать GET запрос по адресу http://www.cbr.ru/scripts/XML_daily.asp. Ответом будет готовый для анализа XML, содержащий информацию о курсах различных валют (на текущую дату). Кусок такого XML привожу ниже:

Получение курсов валют средствами C#

Решить задачу получения курса средствами C# достаточно просто. Возможно, это не совсем оптимальное решение (я пока не считаю себя экспертом в .NET), но оно работает шустро и прекрасно выполняет поставленную задачу. Разбирать XML я решил при помощи класса XmlTextReader. Вот что у меня получилось:

В принципе, можно было обойтись средствами одного XmlTextReader, но тогда код получился бы более сложным для восприятия. Пришлось бы работать с элементами последовательно и сохранять промежуточные значения для дальнейшего анализа. Смешанный подход позволил избавиться от излишеств.

Кстати, эту же задачу реально решить при помощи одного класса XmlDocument. XML файл с информацией о курсах валют небольшого размера, поэтому использование XmlDocument вполне оправданно. Для больших файлов XmlDocument не подходит, т.к. все данные из файла сразу же загружаются в память и ее элементарно может не хватить.

Парсинг курса валют Visual Studio c++

Подскажите пожалуйста как парсить курс валют с определённого сайта на с++ ( visual studio 2012) Windows Forms Может быть есть книги с гайдами?

user avatar

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

Посмотрите другие вопросы с метками c++ visual-studio или задайте свой вопрос.

Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.13.42356

Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *