У меня проблема с использованием веб-службы .NET в PHP. Я попытался с встроенным SoapClient и Zend Framework SoapClient.
Когда я отправляю сообщение в веб-сервис как XML с использованием CURL, я получаю правильный ответ.
<?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>
<Authenticate xmlns="http://xxxxx"></Authenticate>
</soap12:Body>
</soap12:Envelope>
Но когда я пробую PHP SoapClient или Zend Framework SoapClient, он создает следующий конверт, который не работает:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://xxxxx">
<env:Body>
<ns1:Authenticate/>
</env:Body>
</env:Envelope>
Я ясно вижу, что конверты различаются, но почему?
Где форматирование, указанное в WSDL?
Как я могу получить PHP SoapClient для создания конвертов с правильным форматированием XML?
Это не может быть так, что я, как разработчик, должен «угадать», в каком формате веб-сервису нужна оболочка?
Как называются эти два разных конверта SOAP?
Наконец, это не первый раз, когда я столкнулся с этой проблемой. Обычно это исправлено с помощью комбинаций PHP, встроенных в SoapClient, Zend SoapClient, NuSOAP или другую библиотеку. Но это так невероятно раздражает — всегда иметь эти битвы SOAP.
Задача ещё не решена.
Других решений пока нет …