我遇到了一个我无法弄清楚如何解决的问题。我在php中创建了一个soap客户端,它应该向Web服务发出xml请求 - 该服务通过SoapUI工作,但是每当我通过我的php客户端发送相同的请求时,我都会收到以下错误代码:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>**soapenv:VersionMismatch**</faultcode>
<faultstring>**Transport level information does not match with SOAP Message namespace URI**</faultstring>
<detail></detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
现在,客户端和服务都使用soap 1.2版,我相信问题出在客户端,所以这就是我定义它的方式:
$options = array(
'trace' => true,
'exceptions' => 1,
'style' => SOAP_DOCUMENT,
'use' => SOAP_LITERAL,
'soap_version' => SOAP_1_2,
);
$client = new SoapClient("location_of_the_wsdl", $options);
在请求中,我使用以下代码:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Header/>
<env:Body>
<ns2:FunctionName xmlns:ns2="namespace_of_the_service">
<arg0>
<data1>?</data1>
</arg0>
</ns2:FunctionName>
</env:Body>
</env:Envelope>
在soapUI中,这给了我一个“假”结果,因为data1留下了?,当我写入有效数据时,它返回真。
我还注意到在 soapUI 中我发送和接收 Content-type application/soap+xml
,但是当我通过 PHP 客户端发送和接收带有 Content-Type 的标头时text/xml
;
可能是什么问题呢?我nusoap.php
用于客户端。