У меня относительно нет опыта работы с SOAP. Я пытаюсь работать с веб-службой для клиента, используя режим WSDL. У меня возникли проблемы с передачей параметров с помощью метода и получением параметров, которые должны отображаться в запросе по мере необходимости. Я использую стандартный класс мыла php.
Мне нужно, чтобы мой запрос SOAP был структурирован следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://hostserver/">
<SOAP-ENV:Body>
<ns1:DoLogin>
<ns1:request>
<ns1:Session>
<ns1:SessionId>00000000-0000-0000-0000-000000000000</ns1:SessionId>
</ns1:Session>
<ns1:UserCredential>
<ns1:UserName>username</ns1:UserName>
<ns1:Password>password</ns1:Password>
<ns1:ApplicationID>00000000-0000-0000-0000-000000000000</ns1:ApplicationID>
<ns1:ClientID>00000000-0000-0000-0000-000000000000</ns1:ClientID>
<ns1:ClientVersion>V1.0</ns1:ClientVersion>
</ns1:UserCredential>
</ns1:request>
</ns1:DoLogin>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
В php я вызываю функцию так:
$client->DoLogin($args);
И запрос заканчивается так:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://hostserver/"><SOAP-ENV:Body><ns1:DoLogin/></SOAP-ENV:Body></SOAP-ENV:Envelope>
Независимо от того, как я передаю аргументы (одиночные переменные, массив, объект класса), я не могу получить запрос на такую структуру.
Может кто-нибудь помочь мне? Я уверен, что это будет что-то очень простое.