PHP 有响应时 SoapClient 错误
PHP SoapClient Fault when there is response
我正在制作 SoapCall,目前正在与 SoapFault 作斗争:
SoapFault: Client - SOAP-ERROR: Encoding: Violation of encoding rules
请求是这样完成的:
$soapCallArgs[]['REQUEST_ID'] = $childProcessId;
try {
$response = $soapClientOrder->__soapCall('GetSaleOrder',$soapCallArgs);
} catch (SoapFault $ex) {
print 'SoapFault: ' . $ex->faultcode . ' - ' . $ex->getMessage() . "\n";
}
Web 服务正在查询的 ERP 中确实存在 $childProcessId
值(假设为 9999),那么它应该 return 一些响应,但我却得到了提到的 soapfault。
奇怪的是,当我输入一个整数(假设 5,ERP 中不存在)而不是 $childProcessId
时,我确实得到了一个响应(空响应,因为 id 5 在数据库中不存在)。
我在同一个 ERP 中调用其他网络服务,它们都工作正常。只有这个在必须 return 值时出错。
任何建议都会有所帮助,非常感谢。
作为补充说明,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 中,其中一个参数设置为双精度,但响应是一个字符串。我不知道为什么它没有首先在插入中得到验证。
谢谢。
我正在制作 SoapCall,目前正在与 SoapFault 作斗争:
SoapFault: Client - SOAP-ERROR: Encoding: Violation of encoding rules
请求是这样完成的:
$soapCallArgs[]['REQUEST_ID'] = $childProcessId;
try {
$response = $soapClientOrder->__soapCall('GetSaleOrder',$soapCallArgs);
} catch (SoapFault $ex) {
print 'SoapFault: ' . $ex->faultcode . ' - ' . $ex->getMessage() . "\n";
}
Web 服务正在查询的 ERP 中确实存在 $childProcessId
值(假设为 9999),那么它应该 return 一些响应,但我却得到了提到的 soapfault。
奇怪的是,当我输入一个整数(假设 5,ERP 中不存在)而不是 $childProcessId
时,我确实得到了一个响应(空响应,因为 id 5 在数据库中不存在)。
我在同一个 ERP 中调用其他网络服务,它们都工作正常。只有这个在必须 return 值时出错。
任何建议都会有所帮助,非常感谢。
作为补充说明,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 中,其中一个参数设置为双精度,但响应是一个字符串。我不知道为什么它没有首先在插入中得到验证。
谢谢。