簡體   English   中英

PHP SoapClient是否以WSDL模式重映射SoapAction?

[英]PHP SoapClient Remap SoapAction in WSDL-mode?

我在嘗試使用標准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服務。

  1. 取得WSDL網址
  2. 將其另存為本地文件
  3. 並更改方法順序(那些不好的應該是1st)

另一個解決方案。 您可以擴展SoapClient並在方法A內部實際調用遠程方法B。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM