我在尝试使用标准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操作吗?
最佳答案
这是一个丑陋的解决方法,但是正如我们在这里看到的那样,您在另一端有丑陋的Soap服务。
另一个解决方案。您可以扩展SoapClient并在方法A内部实际调用远程方法B。