Мой PHP-код пытается связаться с веб-службой.PHP soapCall создает нежелательные htmlEntities
Я хочу отправить: <ns1:in0><![CDATA[<node>
Но PHP посылает: <ns1:in0><![CDATA[<node>
Если я отправить запрос в <-version
SoapUI, он отлично работает.
Если я отправляю запрос <-version
в SoapUI, он возвращает ошибку.
Мой код (без частной информации):
<?php
$wsdl_path='https://....wsdl';
$ws_path='https://...';
$var='<![CDATA[<node>
<subnode1>
...
</subnoden>
</node>]]>';
$methodName='methodName';
$soapClient = new SoapClient($wsdl_path,array('location'=>$ws_path,'trace'=>true,'exceptions'=>false));
$result = $soapClient->__soapCall($methodName,array(array("in0"=>($var))));
echo "RESULT:\n";
var_dump($result);
echo "\n************************\n";
echo "REQUEST:\n" . $soapClient->__getLastRequest();
echo "\n************************\n";
echo "REQUEST HEADERS:\n" . $soapClient->__getLastRequestHeaders();
echo "\n************************\n";
echo "RESPONSE:\n" . $soapClient->__getLastResponse();
echo "\n************************\n";
echo "RESPONSE HEADERS:\n" . $soapClient->__getLastResponseHeaders();
echo "\n************************\n";
?>
Мой код работает:
RESULT:
object(stdClass)#2 (1) {
["out"]=>
NULL
}
************************
REQUEST:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://..."><SOAP-ENV:Body><ns1:methodName><ns1:in0><![CDATA[<node>
<subnode1>
...
</subnoden>
</node>]]></ns1:in0></ns1:methodName></SOAP-ENV:Body></SOAP-ENV:Envelope>
************************
REQUEST HEADERS:
POST ... HTTP/1.1
Host: ...
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.4.25
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 783
************************
RESPONSE:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><methodNameResponse xmlns="http://..."><out xmlns="http://..." xsi:nil="true"></out></methodNameResponse></soap:Body></soap:Envelope>
************************
RESPONSE HEADERS:
HTTP/1.1 200 OK
Date: ...
Server: Apache/2.2.15 HP-UX_Apache-based_Web_Server (Unix) DAV/2 mod_ssl/2.2.15 OpenSSL/0.9.8o
X-Powered-By: Servlet/2.4 JSP/2.0
Connection: close
Transfer-Encoding: chunked
Content-Type: text/xml; charset=UTF-8
************************
Кто-то может сказать мне, как отправить запрос без HTML сущностями?
Благодаря
Больше информации:
Я не могу использовать NuSOAP
Я пробовал:
$soapClient = new SoapClient($wsdl_path,array('location'=>$ws_path,'trace'=>true,'use' => SOAP_LITERAL,'style' => SOAP_DOCUMENT,'exceptions'=>false));
$params = new SoapVar($var, XSD_ANYXML);
$result = $soapClient->$methodName(array($params));
Но это не решение.
Почему вы не можете отправить раздел CDATA в запрос, поскольку данные должны быть автоматически закодированы SoapClient и PHP? –
Почему вы хотите отправить раздел CDATA в запросе, поскольку данные должны быть автоматически закодированы SoapClient и PHP? –
Я удалил CDATA, это было решение. Большое спасибо, Mikaël –