所以,我正在努力将Fedex的地址验证集成到我正在开发的网站中。 Fedex Web服务是基于SOAP的,因此我们在这里处于WSDL的神奇之地。我还不能流利使用网络服务,所以请耐心等待。
只能在生产级别使用地址验证服务;我已经获得了我的生产凭证,以及我的WSDL的端口部分中的生产URL。
在测试服务集成时,我收到了这条挑衅性的消息:
故障 代码:VersionMismatch 字符串:错误的版本
到目前为止,联邦快递支持似乎无法回答这个问题,所以我在这里问一下:为什么我会遇到这个错误?我是否正确怀疑我们服务器上的SOAP版本可能已经过时,如果是这样,有没有人知道这方面的解决方法?答案 0 :(得分:3)
此错误的常见原因似乎是用于信封的错误命名空间。请参阅http://www.w3.org/TR/soap12-part1/#faultcodes和http://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服务器,则会发生这种情况。