PHP SoapClient在有响应时出现故障

3

我正在进行一个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> 
1个回答

0

我终于解决了。

在响应的XSD中,其中一个参数被设置为double,但响应是一个字符串。我不知道为什么它在第一次插入时没有被验证。

谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接