我正在做一个肥皂调用,目前正在与一个肥皂错误作斗争:
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>
我终于解决了。
在响应的 XSD 中,其中一个参数设置为双精度,但响应是字符串。我不知道为什么它首先没有在插入中得到验证。
谢谢。