Создание клиента для получения курса валют с WSDL Web Service Центробанка

Автор: | 27.08.2012

Создание клиента для получения курса валют с WSDL Web Service

Центробанка http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl

Для работы с сервисом будет использована среда разработки Delphi XE2.

Создадим новый проект VLC Forms Application, затем идем в File-New-Others-WebServices- WSDL Importer

 

Вставляем адрес сервиса

image003

Выбор протокола, по умолчанию авто

image005

Полученный модуль, его нужно добавить USES в главной формы

image007

На странице сервиса http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx

подробно расписаны все его функции.

Нас интересует функция  GetCursOnDateXML

Получение ежедневных курсов валют (как XMLDocument).

В качестве входного параметра ей нужно передать дату в формате TXSDateTime;

По в вики русским по белому написано : « Use AsUTCDateTime to read the value of the TXSCustomDateTime object into a variable of type TDateTime or set its value from a TDateTime value..»

Для этого создадим класс Date := TXSDateTime.Create;

И присвоим ему сегодняшнюю дату, используя функцию Now , (она возвращает дату в формате TDateTime. )

Date.AsUTCDateTime := Now;

Кинем на форму компонент Memo и Button, для последнего напишем обработчик события OnClick

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

var

ws: DailyInfoSoap;

Date: TXSDateTime;

Res: GetCursOnDateResult;

XML_Data: TXMLData;

Xml: IXMLDocument;

FRootNode: IXMLNode;

i: integer;

begin

Xml := NewXMLDocument; // создали новый документ

Date := TXSDateTime.Create;

Date.AsUTCDateTime := Now; // поставили время

ws := GetDailyInfoSoap(); // получаем интерфейс веб-сервиса

Res := GetCursOnDateResult.Create; // создаем класс для получения результата

Res.schema := ws.GetCursOnDateXML(Date); // запись в поле класса

XML_Data := Res.schema; // переводим данные в переменную XML_Data

Memo1.Text := XML_Data.XMLNode.Xml; // выводим весь вернувшийся блок XML в компонент мемо1

Xml.DocumentElement := XML_Data.XMLNode;

Xml.SaveToFile(‘CBRF.xml’); // сохранили блок XML в файл CBRF.xml располагается он рядом с exe файлом нашей программы

FRootNode := Xml.ChildNodes.FindNode(‘ValuteData’); // смотрим содержимое корневой ветви ValuteData

for i := 0 to FRootNode.ChildNodes.Count — 1 do // проходим в цикле по всем дочерним ветвям ValuteData

begin

if FRootNode.ChildNodes.Nodes[i].ChildNodes.FindNode(‘VchCode’).NodeValue = ‘USD’; // ищем блок c Долларами США

then

ShowMessage(FRootNode.ChildNodes.Nodes[i].ChildNodes.FindNode(‘Vcurs’).NodeValue);

// если нашли выводим на экран сообщение

end;

Res.Destroy;// уничтожаем класс, чтобы не было утечек памяти

Date.Destroy;// уничтожаем класс, чтобы не было утечек памяти

end;

[/cc]

Список всех доступных валют можно посмотреть в Memo1, также в сохраненном файле CBRF.xml.

Полный список функций сервиса находится по адресу

http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx

Создание клиента для получения курса валют с WSDL Web Service Центробанка: 2 комментария

  1. Melo

    Здравствуйте! пробую сделать на делпи 10. не получается куча ошибок.
    подходит данная инcинструкция для delphi 10

    1. Владимир

      Не знаю. В статье показан принцип. Дальше всё зависит от Вас.

Добавить комментарий для Melo Отменить ответ

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