PHP SoapClient在WSDL模式下重新映射SoapAction?

Hal*_*top 6 php soap wsdl web-services

我有一个问题,我正在尝试使用标准的PHP SoapClient访问SoapServer上的方法.问题是SoapServer上的方法列出了两次,名称相同,但操作不同.

例如:SOAP UI显示GetStockQuote和GetStockQuote两次列出,但第二个GetStockQuote实际上将调用GetStockQuoteV2.

但是我的PHP SoapClient,如果我调用$ client-> GetStockQuote,它会自动调用第一个.根据我的研究,我必须做这样的事情.

$client->__soapCall('GetStockQuote', array($request), array('soapaction'=>'GetStockQuoteV2'));
Run Code Online (Sandbox Code Playgroud)

但是当我处于wsdl模式时,它仍然调用GetStockQuote而不是GetStockQuoteV2.

我的结论是,我必须以非wsdl模式运行并处理其中的烦恼.当处于非wsdl模式时,上面的__soapCall似乎正在调用正确的方法,但由于我处于非wsdl模式,我认为构建服务器所需的相应AuthHeader存在问题.

我的问题是,我可以在PHP SoapClient wsdl模式下重新映射soap操作吗?

gaR*_*Rex 2

这是一个丑陋的解决方法,但正如我们在这里看到的那样——另一边有丑陋的 Soap 服务。

  1. 获取 WSDL 网址
  2. 保存为本地文件
  3. 并更改方法顺序(那些不好的应该是第一)

另一个解决方案。您可以扩展 SoapClient,并在方法 A 内部实际调用远程方法 B。