我有一个问题,我正在尝试使用标准的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操作吗?
答案 0 :(得分:2)
这是一个丑陋的解决方法,但正如我们在这里看到的那样 - 你在另一方面拥有丑陋的肥皂服务。
另一种解决方案。您可以扩展SoapClient,而在方法A中实际调用远程方法B.