【发布时间】:2016-01-14 16:07:47
【问题描述】:
我正在进行 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>
【问题讨论】:
标签: php soap soap-client