Запрос из PHP на вебсервис SOAP
Вот появилась задача с API курьерской службы, у которых вебсервис работает на SOAP. Нужно сформировать запрос XML на PHP. Через POSTMAN запрос проходит и всё ок. Вот только не могу понять как правильно сформировать запрос в PHP скрипте. Буду очень благодарен любой помощи. Пример запроса:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pos="http://webservices.kazpost.kz/postratesws">
<soapenv:Header/>
<soapenv:Body>
<pos:GetAddrLetterRequest>
<pos:Key>69a316asdas1231267dc5b3</pos:Key>
<pos:AddrInfo>
<!--Optional:-->
<pos:RcpnName>Тест</pos:RcpnName>
<pos:RcpnPhone>87071234567</pos:RcpnPhone>
<pos:RcpnIndex>050000</pos:RcpnIndex>
<pos:RcpnCity>Алматы</pos:RcpnCity>
<pos:RcpnStreet>Богенбай</pos:RcpnStreet>
<pos:RcpnHouse>1</pos:RcpnHouse>
<pos:SndrBIN>098765432121</pos:SndrBIN>
<pos:SndrName>отправитель</pos:SndrName>
<pos:SndrPhone>87071234567</pos:SndrPhone>
<pos:SndrIndex>010000</pos:SndrIndex>
<pos:SndrCity>Нур-Султан</pos:SndrCity>
<pos:SndrStreet>Кунаева</pos:SndrStreet>
<pos:SndrHouse>20</pos:SndrHouse>
<pos:Weight>1</pos:Weight>
<pos:ProductCode>P118</pos:ProductCode>
<pos:Marks>
<pos:Mark>ReturnAfter</pos:Mark>
</pos:Marks>
<pos:SendMethod>1</pos:SendMethod>
<pos:MailCtg>1</pos:MailCtg>
</pos:AddrInfo>
</pos:GetAddrLetterRequest>
</soapenv:Body>
</soapenv:Envelope> ```
Ответы (2 шт):
Автор решения: NewPerson
→ Ссылка
Через CURL, как вариант. В Postman есть волшебная кнопочка "Code". Если кликнуть, появится список с различными ЯП. Выбирайте PHP Curl и будет вам счастье :)
Автор решения: Yessey
→ Ссылка
Теперь пытаюсь ответ в XML перевести в JSON или в PHP массив через $xml = simplexml_load_string($response); получаю пустой массив var_dump-ом.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header />
<SOAP-ENV:Body>
<ns2:GetAddrLetterResponse xmlns:ns2="http://webservices.kazpost.kz/postratesws">
<ns2:AddrLetPdf>
//BASE64 code//
</ns2:AddrLetPdf>
<ns2:Barcode>ES000081548KZ</ns2:Barcode>
<ns2:ResponseInfo>
<ns2:ResponseGenTime>2020-07-21T10:14:57.405+06:00</ns2:ResponseGenTime>
<ns2:ResponseCode>0</ns2:ResponseCode>
<ns2:ResponseText>Принято успешно!</ns2:ResponseText>
</ns2:ResponseInfo>
</ns2:GetAddrLetterResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>