Я давно пытаюсь отправить правильный запрос на soap-сервер. Я продолжаю получать сообщение об ошибке.
Вот мой xml
ПОЛУЧИТЬ ПОСЛЕДНИЙ ЗАПРОС (добавлены новые строки):
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"> <SOAP-ENV:Body><ns1:TestData1><ns1:iVal>1</ns1:iVal></ns1:TestData1></SOAP-ENV:Body> </SOAP-ENV:Envelope>
ПОСЛЕДНИЙ ОТВЕТ:
ЗАПРОСЫ:
POST /DPWebService/CardsService.svc/ICardsService HTTP/1.1 Host: d67v7tg1 Connection: Keep-Alive User-Agent: PHP-SOAP/5.2.9-1 Content-Type: text/xml; charset=utf-8 SOAPAction: "http://tempuri.org/ICardsService/TestData1" Content-Length: 254
Вот ответ.
object(SoapFault)#2 (8) { ["message:protected"]=> string(142) "Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'." ["string:private"]=> string(0) "" ["code:protected"]=> int(0) ["file:protected"]=> string(32) "C:\localhost\www\test5\index.php" ["line:protected"]=> int(208) ["trace:private"]=> array(3) { [0]=> array(4) { ["function"]=> string(11) "__doRequest" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(5) { [0]=> string(254) " 1 " [1]=> string(59) "http://d67v7tg1/DPWebService/CardsService.svc/ICardsService" [2]=> string(42) "http://tempuri.org/ICardsService/TestData1" [3]=> int(1) [4]=> int(0) } } [1]=> array(4) { ["function"]=> string(6) "__call" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(2) { [0]=> string(9) "TestData1" [1]=> array(1) { [0]=> array(2) { ["iVal"]=> int(1) ["strVal"]=> string(5) "Proba" } } } } [2]=> array(6) { ["file"]=> string(32) "C:\localhost\www\test5\index.php" ["line"]=> int(208) ["function"]=> string(9) "TestData1" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(1) { [0]=> array(2) { ["iVal"]=> int(1) ["strVal"]=> string(5) "Proba" } } } } ["faultstring"]=> string(142) "Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'." ["faultcode"]=> string(4) "HTTP" }
ПОСЛЕДНИЙ ОТВЕТ:
ЗАПРОСЫ:
POST /DPWebService/CardsService.svc/ICardsService HTTP/1.1 Host: d67v7tg1 Connection: Keep-Alive User-Agent: PHP-SOAP/5.2.9-1 Content-Type: text/xml; charset=utf-8 SOAPAction: "http://tempuri.org/ICardsService/TestData1" Content-Length: 254
Натуральное расширение SOAP от PHP является неотъемлемым двоичным блоком ужасов.
Согласно этому комментарию в руководстве по PHP , он жестко запрограммирован на отправку SOAP-запросов с помощью application/soap+xml
типа MIME-типа application/soap+xml
.
Кажется, ваш SOAP-сервер отклонил этот тип контента, ожидая только text/xml
.
Согласно этому стандарту SOAP 1.2 , раздел 7.1.4 на SOAP через HTTP:
Соответствующие реализации этой привязки:
- ДОЛЖНА быть способна отправлять и получать сообщения, сериализованные с использованием типа носителя «application / soap + xml», правильное использование и параметры которого описаны в A. Тип приложения / мыла + xml Media .
Сервер SOAP, который вы используете, не является жалобой в стандарте 1.2.
(Для записи это первый раз, когда я когда-либо видел кого-нибудь с вопросом о расширении PHP SOAP, где проблема была не с самим расширением!)
Кажется, это исправило это для меня.
$client = new SoapClient($this->url, array('soap_version' => SOAP_1_2));