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

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

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

Сообщение IStukalov » 21.03.2022 23:31:00

Ichthyander
По факту на самом деле у ЦБ РФ не явный протокол SOAP. Т.е. у них по сути SOAP вложен в HTTP. Например адрес их веб-сервера с веб-сервисами такой:
http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx
Сам HTTP запрос (заголовок) выглядит следующим образом:

Код: Выделить всё
POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1
Host: www.cbr.ru
Content-Type: application/xml; charset=utf-8
Content-Length: 357


Именно формирование такого заголовка я реализовал через код.
Далее по правилам HTTP идет пустая строка и тело по сути уже этого запроса (так как ЦБ РФ использует POST метод). В теле как раз указывается сам пакет (конверт) SOAP сообщения:
Код: Выделить всё
<?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>2022-03-21</On_date>
</GetCursOnDateXML>
</soap:Body>
</soap:Envelope>


Проблема в том, что я в принципе когда отправляю запрос, ловлю ошибку 403. Т.е. я просто не могу достучаться до сервиса ЦБ РФ.
Сам ответ от ЦБ РФ приходит в таком ключе:

Код: Выделить всё
<body>
<h1>Forbidden - 403</h1>
<h1> Blocked by PT Application Firewall.</h1>
<pre>Request ID: 2022-03-21-19-32-30-619939362FB6B74B</pre>
</body>


И честно говоря, куда уж проще еще написать не понимаю пока что. Т.е. если бы у меня хотя бы получился коннект, то тогда вопросов не было. А тут даже без тела получаю отлуп от сервера...

Добавлено спустя 10 минут 44 секунды:
И это кстати я за 3 три дня перекопал туеву тучу информации как по Lazarus, так и по HTTP протоколу. Там все просто. Вот только впечатление такое, что в сокет летит некорректная информация, которая как раз и не воспринимается веб-сервером и веб-сервисом ЦБ РФ.

Добавлено спустя 18 минут 27 секунд:
Либо нужно точное описание/понимание методов POST, которых у данного класса в Lazarus довольно таки много...
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

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

Сообщение Снег Север » 22.03.2022 11:40:50

Отлуп может быть связан с блокировкой опознанного синапса. Я с подобным сталкивался. Помогает маскировка соединения под один из стандартных браузеров.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2849
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение IStukalov » 22.03.2022 11:47:45

Снег Север
А можете написать как именно? Я вроде добавлял маскировку в виде тега и мозиллы 4.0. Но все равно не помогает. Поэтому пока не могу понять, куда копать или рыть дальше.
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

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

Сообщение Снег Север » 22.03.2022 11:58:37

Например Http.UserAgent := 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'; Стоит попробовать перебрать несколько вариантов. Поищите в интернете.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2849
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение IStukalov » 22.03.2022 12:10:31

Снег Север
Спасибо, попробую сейчас.

Добавлено спустя 1 час 43 минуты 23 секунды:
Во общем с Synapse разобрался :) Заработало. Но чтобы окончательно понять, что происходит, пришлось через трассировку смотреть конечный пакет, который уходил. И просто увидел, что там сборка происходит заголовка на автомате и многие предохранительные вещи, с моей стороны излишние. Короче потер лишний код, который "помогал" с моей точки зрения формировать заголовок, заполнил более корректно все переменные связанные со сборкой заголовка пакета и все заработало. Проблема с Synapse ушла.
Теперь хочу попробовать тоже самое через родной пакет Lazarus сделать. Мне он по факту больше понравился.

Но реально документации не хватает. Без нее трудновато разбираться...

Добавлено спустя 22 часа 38 минут 7 секунд:
Итак, убил еще один день на эксперименты с классом fphttpclient. Так и не получилось с помощью него законектиться с вебсервисом ЦБ РФ корректно. Проблема мне видится в том, что заголовок запроса формируется некорректно. Т.е. какую то часть заголовка, класс перезатирает, когда я вызываю метод POST для отправки данных в ЦБ РФ.Так как внутри происходят телодвижения с заголовком. Плюс не совсем понятно, как в принципе осуществляется попытка сформировать заголовок (у Synapse я изучил и понял, а тут непонятно).
Плюс у некоторых методов POST возникают различные ошибки при попытке обратиться к Stream классу, где-то внутри (типа READ). Однако методы которые я вызываю, не содержат в качестве входных параметров данный тип. Собственно кто-то может помочь разобраться с данным классом? Или он априори все таки сырой? Во всяком случае SYNAPSE реально работает как мне нужно, просто не было информации, как правильно заполнять данные и что можно указывать в заголовке запроса и как, а что нет.

Но у класса Lazarus нативная поддержка все таки, плюс он обновляется возможно, в отличии от Synapse.
IStukalov
новенький
 
Сообщения: 25
Зарегистрирован: 16.03.2022 14:35:43

Пред.

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

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

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

Рейтинг@Mail.ru