我有一台只提供wsHttpBinding
网络服务的服务器,需要在PHP中使用它。
标准的SoapClient无法使用它,给出以下错误:
http://www.w3.org/2005/08/addressing/faults:Sendera:ActionMismatch在消息上指定的SOAP操作''与HTTP SOAP Action“http://tempuri.org/ICategoryApi/Tree”不匹配。一个:动作
是否有一些支持wsHttpBinding
的PHP SoapClient实现或设置?
答案 0 :(得分:1)
wsHttpBinding
使用PHP SoapClient无法处理的WS-Security和WS-Addressing功能。
根据错误,我会说问题与WS-Addressing有关(HTTP Action
标头丢失,SOAP消息中缺少<a:Action>
标头)。
看看这是否有帮助:WSO2-WSF PHP。
答案 1 :(得分:1)
我发现服务器也有basicHttpBinding模式,但这些方法在两种绑定模式下都有相同的名称。
问题仍然存在,因为PHP默认客户端似乎不允许在它们之间进行区分,实现重载,因为它按名称调用方法并转到第一个匹配(wsHttpBinding)。
我通过使用 nusoap来解决正确的方法解决了这个问题(这项任务很好)。