Я новичок в SOAP и веб-сервисах и пытаюсь подключиться к поставщику WSDL SOAP, используя PHP. Я успешно подключился к API и смог вывести список методов. Однако, когда я пытаюсь сделать базовый вызов одной из функций, я получаю эту ошибку, возвращаемую с сервера:
Microsoft.Web.Services.SoapFormatException: входное сообщение не было допустимым сообщением SOAP, поскольку оно имеет либо неправильное имя, которое является Конвертом, либо неправильное пространство имен, которое http://www.w3.org/2003/05/soap-envelope. в Microsoft.Web.Services.SoapEnvelope.PostLoad ( ) в Microsoft.Web.Services.SoapEnvelope.Load (поток Stream) в Microsoft.Web.Services.WebServicesExtension.BeforeDeserializeServer (сообщение SoapMessage)
Это мой вызов веб-службы:
$soapConnection = new SoapClient("http://webapi.testsupplier.com/gvitawapi.asmx?WSDL",array('soap_version' => SOAP_1_2, 'uri' => "http://webapi.testsupplier.com/"));
var_dump($soapConnection->GetAllTestDataXML());
Это ответ xml из документации поставщиков. Я не уверен, что должен что-то делать с этим:
POST /gvitawapi.asmx HTTP/1.1
Host: webapi.testsupplier.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetAllTestDataXML xmlns="http://webapi.testsupplier.com/" />
</soap12:Body>
</soap12:Envelope>
Любые мысли, которые вы можете высказать, будут высоко оценены!