Подключение к веб-сервисам ЦБ РФ.

Модератор: Модераторы

Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 16.03.2022 14:42:18

Добрый день.
Не знаю получу ли я ответ или нет (судя по последней активности), но потребовалось научиться подключаться к веб-сервисам ЦБ РФ. У них на сайте есть описание всех сервисов, которые возвращают значения не в DataSet а в XML. Т.е. веб-сервисы заказнчиваются на XML. Собственно пытаюсь это сделать с помощью Synapse HTTPSEND. Однако не получается.
Формирую MimeType и задаю все данные по серверу. А в итоге ловлю при коннекте ошибку 403.

И еще один момент, меня сильно смущает, что заголовок у запросов для всех веб-сервисов ЦБ РФ выглядит таким образом:
POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1
Host: www.cbr.ru
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://web.cbr.ru/GetCursDynamicXML"

При этом, сам заголовок веб-сервиса я не могу сформировать (т.е. заголовок формируется исключительно Synapce). Собственно куда копать или как можно подключиться к веб-сервисам ЦБ РФ? Если вдруг кто-то копал или уже сталкивался с этим и знает как быть, отпишитесь пжл. А то я уже 3 день голову ломаю и ищу в нете, но ничего не могу найти.
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение Ichthyander » 17.03.2022 21:19:37

Я подключался к веб-сервису ЦБ РФ. Вот, кстати, готовый модуль для парсинга курса валют viewtopic.php?f=6&t=43301 https://github.com/Al-Muhandis/CurrencyRates . Но там все просто. Никакого тебе "супа"
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 17.03.2022 22:55:17

Ichthyander
Посмотрел. Как я понял вы подключались с помощью JSON? Для меня пока этот момент не очень. Я сейчас бьюсь с подключением по SOAP посредством SYNAPCE (использую класс THTTPSEND).
Собственно пока пост был на модерации, я немного продвинулся дальше, но не сильно. Собственно за несколько дней ковыряния созрели следующие вопросы:

1) Не получается прочитать ответ, который приходит в Document с помощью метода Read. Т.е. как бы я не пытался куда либо прочитать поток данных, обращение потом к этому буферу вызывает ошибку доступа к памяти. В итоге получилось обращаться к буферу напрямую через свойство Memory. Почему через Read не получается прочитать? Можете показать правильную конструкцию написания?

2) Формирую запрос с телом согласно правилам, которые указаны на сайте ЦБ РФ в разделе технического описания. Т.е. заголовок и тело корректные (во всяком случае то, что я вижу визуально). Однако при получении пакета, в ответ приходит ошибка 415. Сам же ответ выглядит таким образом: The server cannot service the request because the media type is unsupported. Собственно не могу понять, что не так...
Пример моего запроса:
Код: Выделить всё
POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1
Host: www.cbr.ru
Content-Type: text/xml; charset=utf-8
Content-Length: 364
SOAPAction: "http://web.cbr.ru/GetCursOnDateXML"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetCursOnDateXML xmlns="http://web.cbr.ru/">
<On_date>17.03.2022 21:48:13</On_date>
</GetCursOnDateXML>
</soap:Body>
</soap:Envelope>


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

3) Не совсем понятно, какие значения реально надо указывать в таких свойствах, как: TargetHost, Protokol если в методе HTTPMethod явно указывается протокол и адрес, по которому нужно законнектиться Т.е. каким образом одно связано с другим? В итоге я первые два свойства в принципе не заполняю, так как я не вижу как они влияют на заголовок моего запроса, когда я их указываю.

4) Как вообще увидеть реальный текст запроса, который уходит по адресу? Возможно то, что я костылями отображаю, совсем не совпадает с тем, что реально уходит...

5) Есть какие то другие компоненты, которые позволили бы в принципе общаться с ЦБ РФ по SOAP протоколу (меня интересуют веб-функции, которые работают с форматом XML).

Можете помочь? Или кто-то может помочь разобраться в этом?
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение Ichthyander » 17.03.2022 23:09:40

К слову, JSON, проще, быстрее, популярнее в последние годы, поэтому почему бы и нет. SOAP - устаревший громоздкий протокол, которые все реже где используется.
Зачем использовать SYNAPSE, если все это есть в нативном fphttpclient
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 17.03.2022 23:11:49

Ichthyander
Да потому что только недавно столкнулся с тем, что понадобилось научиться работать с сетью в Паскале :)
Гуглил, рекомендовано использовать SYNAPCE, вот и разбираюсь с ним. То что мне нужно, я так и не нашел нигде на уровне исходников, чтобы понять как это работает.

А fphttpclient надо скачивать или устанавливать отдельно? Или он присутствует уже в Pascal?
Я в принципе использую Lazarus.
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение Ichthyander » 17.03.2022 23:13:22

5) есть библиотека для работы с SOAP: WebServiceToolkit.

Добавлено спустя 1 минуту 39 секунд:
IStukalov писал(а):А fphttpclient надо скачивать или устанавливать отдельно? Или он присутствует уже в Pascal?

Уже присутствует в FreePascal.
Но Вам придется попыхтеть, если действительно придется реализовывать работу SOAP протокола. Если в вашем случае, есть возможность избежать этого и использовать что-то менее громоздкой, то крайне рекомендую выбрать что-то другое при работе с API ЦБ РФ
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 17.03.2022 23:18:54

Ichthyander
Ну как вариант смотреть еще на WebServiceToolkit дополнительно, про который вы написали (т.е. по сути на два модуля, которых я до этого не рассматривал). Но если все так про Synapce, он совсем не подходит для моих целей?
Просто я с ним вроде как разобрался, за исключением вышеуказанных пунктов. Во всяком случае коннект идет и ответы идут (не такие, которые я ожидаю, но все же).
Или Synapce в принципе сильно устарел и лучше его более не использовать?

Добавлено спустя 7 минут 38 секунд:
Ichthyander писал(а):Уже присутствует в FreePascal.
Но Вам придется попыхтеть, если действительно придется реализовывать работу SOAP протокола. Если в вашем случае, есть возможность избежать этого и использовать что-то менее громоздкой, то крайне рекомендую выбрать что-то другое при работе с API ЦБ РФ

А что еще то можно использовать? На сайте ЦБ РФ написано, что либо XML либо .NET (так называемый Dataset). Второй вариант я не хочу, так как не люблю NET в целом да и кросплатформенный вариант не получится сделать. Поэтому я сейчас и пытаюсь разобраться с API с точки зрения работы через SOAP и получения данных через XML. Но пока не взлетает.
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение Ichthyander » 17.03.2022 23:32:12

Смотри. synapse или fphttpclient это то, что организует транспортный протокол, то есть HTTP(S). WebServiceToolkit берет на себя организацию протокола SOAP. Так вот, я рекомендую отказаться от SOAP, если такая возможность конечно есть, при работе с API.
А так и сам WebServiceToolki вроде как юзает либу synapse.

Если кроме SOAP никак, то пробуй реализовать самостоятельно на базе Synapse (что ты и пытаешься сделать) или fphttpclient, либо осваивай WebServiceToolkit
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 17.03.2022 23:36:36

Ichthyander
Понял, спасибо. Почитаю завтра, посмотрю.
В принципе если что, консультация с вашей стороны возможна? Если вдруг, будут затыки или непонимание...
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение Ichthyander » 18.03.2022 11:09:52

Затыки с SOAP почти наверняка будут ( . Работал с SOAP очень давно: с WST (здесь на форуме даже топик делал) и непосредственно через synapse. Давно было, вряд ли что вспомню. Чтобы конкретно помочь, нужно погружаться, на что время не будет. Что знал - подсказал. Может быть товарищи с форума еще что подскажут - помогут
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 18.03.2022 22:51:42

Ichthyander
Сегодня полдня изучал fphttpclient. Потом попробовал написать код запроса. Во общем столкнулся с проблемой, что никак не могу заполнить тело запроса (т.е. заголовок запроса сформировал без проблем). А тело никаким образом не заполняется. Посмотрел сам класс fphttpclient. А там по сути тело запроса объявлен как абстрактный класс TStream. Это что получается надо самому реализацию всего этого делать? Или я куда-то не туда смотрю?

Добавлено спустя 22 минуты 18 секунд:
Да похоже именно так :( То есть нужно много самому дополнительно описывать. Вот уж не ожидал такого подхода. Во общем пока разбираюсь дальше.
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение Снег Север » 18.03.2022 23:29:12

IStukalov писал(а):Это что получается надо самому реализацию всего этого делать?

В чём проблема записать любой текст в стринглист и вывести его в стрим?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 19.03.2022 00:36:59

Снег Север
Нет проблемы, я уже так и сделал. Просто Synapse по сути автоматом все это делает, вот и все.

Уже разобрался как-то с этим классом. Он реально получше и более теперь восприятнее идет. Но подключиться к ЦБ РФ не могу. Возвращает код ошибки 403 и текст:
<h1>Forbidden - 403</h1>
<h1> Blocked by PT Application Firewall.</h1>
<pre>Request ID: 2022-03-18-20-32-11-709FC34F44B7C237</pre>

Написал повторно в тех поддержку ЦБ РФ. Надеюсь ответят. При этом скачал их ПО для теста и с моего компа все работает на ура. Подозрение, что проблема где-то рядом, только не могу уловить где...
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение IStukalov » 21.03.2022 21:25:08

Ichthyander
Во общем посмотрел модуль fphttpclient. Он проще конечно в понимании, но честно говоря с ним тоже не могу соединиться с сервисом ЦБ РФ. Возвращается ошибка 403. При этом используя родную утилиту ЦБ РФ, вижу что она спокойно соединяется с ЦБ РФ (правда неизвестно каким реально способом).
Покопал в глубь этот класс и честно говоря такое впечатление, что там тоже что-то не до конца то ли учтено, то ли реализовано. И в принципе, почитав снова все, что касается HTTP протокола, пришел к выводу, что должно работать то, что описал ЦБ РФ у себя в части технической информации. Однако не работает:( Куда копать непонятно уже. Такое впечатление, что поддержка web в ObjectPascal ну совсем никакая. И что дальше делать непонятно пока.
Последний раз редактировалось IStukalov 21.03.2022 23:23:14, всего редактировалось 1 раз.
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Re: Подключение к веб-сервисам ЦБ РФ.

Сообщение Ichthyander » 21.03.2022 23:15:59

Поддержка web Лазарус реализовано. Я реализовал несколько веб-сервисов в нем. Документации мало - да. И погуглить мало что получается. В целом все работает. Ваш основной затык - это реализация SOAP. Я думаю в этом и проблема. Вам нужно разобраться как реализовать SOAP протокол на HTTPS. Там вроде нужно какие-то заголовки в сам заголовок HTTP запроса и другие вещи. Проверьте также как работает HTTPS. Может в этом проблема (OpenSSL).
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

След.

Вернуться в Сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru