Ошибка при вызове метода мыла WSDL - Microsoft.Web.Services.SoapFormatException - PullRequest
0 голосов
/ 12 марта 2012

Я новичок в 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>

Любые мысли, которые вы можете высказать, будут высоко оценены!

1 Ответ

0 голосов
/ 13 марта 2012

Оказывается, я смог заставить это работать, переключившись на SOAP 1.1 в моем соединении. По какой-то причине это работает, однако переключение на 1.2 вызывает ту же ошибку. Это также помогло мне отладить, позволив исключениям получить полный текст ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...