По факту на самом деле у ЦБ РФ не явный протокол 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 довольно таки много...