PHP Soap客户端在有响应时出错


PHP SoapClient Fault when there is response

我正在做一个肥皂调用,目前正在与一个肥皂错误作斗争:

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 中,其中一个参数设置为双精度,但响应是字符串。我不知道为什么它首先没有在插入中得到验证。

谢谢。