我正在制作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>
答案 0 :(得分:0)
我终于解决了它。
在响应的XSD中,其中一个参数设置为double,但响应是一个字符串。我不知道为什么它首先在插入时没有得到验证。
感谢。