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

时间:2016-08-12 18:04:07

标签: php web-services soap wsdl

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

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

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

$client->__soapCall('GetStockQuote', array($request), array('soapaction'=>'GetStockQuoteV2'));

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

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

我的问题是,我可以在PHP SoapClient wsdl-mode中重新映射soap操作吗?

1 个答案:

答案 0 :(得分:2)

这是一个丑陋的解决方法,但正如我们在这里看到的那样 - 你在另一方面拥有丑陋的肥皂服务。

  1. 参加WSDL网址
  2. 将其另存为本地文件
  3. 并改变方法顺序(那些不好应该是第1个)
  4. 另一种解决方案。您可以扩展SoapClient,而在方法A中实际调用远程方法B.