这个SOAP Fault是否意味着我认为它意味着什么?

时间:2009-11-12 05:53:32

标签: php web-services soap

所以,我正在努力将Fedex的地址验证集成到我正在开发的网站中。 Fedex Web服务是基于SOAP的,因此我们在这里处于WSDL的神奇之地。我还不能流利使用网络服务,所以请耐心等待。

只能在生产级别使用地址验证服务;我已经获得了我的生产凭证,以及我的WSDL的端口部分中的生产URL。

在测试服务集成时,我收到了这条挑衅性的消息:

故障 代码:VersionMismatch 字符串:错误的版本

到目前为止,联邦快递支持似乎无法回答这个问题,所以我在这里问一下:为什么我会遇到这个错误?我是否正确怀疑我们服务器上的SOAP版本可能已经过时,如果是这样,有没有人知道这方面的解决方法?

3 个答案:

答案 0 :(得分:3)

此错误的常见原因似乎是用于信封的错误命名空间。请参阅http://www.w3.org/TR/soap12-part1/#faultcodeshttp://www.w3.org/TR/soap12-part1/#vmfault

答案 1 :(得分:2)

WSDL和SOAP都有几个版本,PHP似乎issues至少WSDL 2.0

检查WSDL文件的标头以验证FedEx想要什么(它们可能为不同版本提供多个Web服务)并使用嗅探器检查脚本实际发送的内容。

答案 2 :(得分:0)

此错误表示您没有获得客户端库有效且可识别的SOAP信封。换句话说,服务器返回的XML通常如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        ...
    </soapenv:Body>
</soapenv:Envelope>

......看起来像别的东西。

除其他原因外,如果服务器崩溃严重并发送随机错误页面,或者终端URL根本不是SOAP服务器,则会发生这种情况。