PHP SoapClient有响应时出错

时间:2016-01-14 16:07:47

标签: php soap soap-client

我正在制作SoapCall,目前正在努力使用SoapFault:

  

SoapFault:客户端 - SOAP-ERROR:编码:违反编码规则

请求以这种方式完成:

$soapCallArgs[]['REQUEST_ID'] = $childProcessId;
try {
  $response = $soapClientOrder->__soapCall('GetSaleOrder',$soapCallArgs);
} catch (SoapFault $ex) {
  print 'SoapFault: ' . $ex->faultcode . ' - ' . $ex->getMessage() . "\n";
}

$childProcessId值(假设是9999)确实存在于Web服务正在咨询的ERP中,然后它应该返回一些响应,但是我得到了上面提到的soapfault。

奇怪的是,当我输入一个int(假设是5,ERP中不存在)而不是$childProcessId时,我得到一个响应(空响应,因为id 5没有不存在于数据库中。

我在同一个ERP中调用其他Web服务,所有这些都可以正常工作。只有这一个在必须返回值时才会出错。

任何建议都会有所帮助,非常感谢。

正如附加说明,WSDL和请求的php形成的XML: WSDL

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns1:ParametroEntrada xmlns:ns1="http://www.example.org">
            <ns1:REQUEST_ID></ns1:REQUEST_ID>
        </ns1:ParametroEntrada>
    </soap:Body>
</soap:Envelope>

请求的XML

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.org">
    <SOAP-ENV:Body>
        <ns1:ParametroEntrada>
            <ns1:REQUEST_ID>5</ns1:REQUEST_ID>
        </ns1:ParametroEntrada>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope> 

1 个答案:

答案 0 :(得分:0)

我终于解决了它。

在响应的XSD中,其中一个参数设置为double,但响应是一个字符串。我不知道为什么它首先在插入时没有得到验证。

感谢。