我正在进行一个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";
}
如果ERP中存在
$childProcessId
值(例如9999),则应该返回一些响应,但实际上我得到了所述的soapfault。奇怪的是,当我输入一个整数(例如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>