【问题标题】:PHP SoapClient Fault when there is response有响应时的PHP SoapClient错误
【发布时间】: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


    【解决方案1】:

    我终于解决了。

    在响应的 XSD 中,其中一个参数设置为 double,但响应是字符串。我不知道为什么它一开始就没有在插入中得到验证。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      相关资源
      最近更新 更多