@IgorNoskov

Как сформировать xml для запроса к wsdl на php?

Здравствуйте! Пытаюсь интегрироваться с одним сервисом. Есть файл wsdl и два файла xsd, которые дал сервис. При формировании запроса нужно передать миллион полей. Можно как-то средствами php из этих файлов вытащить объект со всеми нужными полями для запроса и потом подставить в объекте нужные значения?

Есть у кого-нибудь опыт интеграции с wsdl на php. Я пытаюсь интегрироваться с помощью Guzzle + meng-tian/async-soap-guzzle. Может кто-то знает более подходящие инструменты для данной ситуации.

Если есть какие-то хорошие примеры по данной теме, скиньте, пожалуйста, ничего годного не могу найти.
  • Вопрос задан
  • 133 просмотра
Решения вопроса 3
irishmann
@irishmann
Научись пользоваться дебаггером
Скорее всего тебе не нужно заполнять миллион полей. WSDL - это XML-документ в котором прописано какие методы ты можешь использовать.
https://habr.com/ru/post/187390/
Ответ написан
renaay
@renaay
[web] developer
В конструкторе указываешь ссылку на wsdl документ, а дальше уже плясать от того что нагуглишь, ибо документация по SOAP в php не очень

https://www.php.net/manual/ru/class.soapclient.php
Ответ написан
AlekseyNikulin
@AlekseyNikulin
недочеловек
IgorNoskov, Roman Biz верно тебе указал ссылку.

Вот пример
// Работать с SOAP очень просто.
$client = new SoapClient('https://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL');

// можем посмотреть список доступных методов
print_r($client->__getFunctions());

// теперь можно вызвать метод с нужным параметром. Вернет объект.
$result = $client->GetCursOnDateXML(['On_date' => '2019-08-09']);

// Так как разработчики в cbr не компетентны и не умеют работать полноценно с SOAP, то они прибегают
// к механике:- "Главное нам хорошо, а все остальные пусть крутятся"
// Ответ возвращается ввиде XML, а не структурой, поэтому нужно этот ответ преобразовать в массив.

print_r(simplexml_load_string($result->GetCursOnDateXMLResult->any));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы