私は、標準のPHP SoapClientを使用してSoapServerのメソッドにアクセスしようとしているところに問題があります。問題は、SoapServerのメソッドが同じ名前で2回リストされているが、アクションが異なることです。PHP SoapClientはWSDLモードでSoapActionを再マップしますか?
たとえば、SOAP UIではGetStockQuoteとGetStockQuoteが2回表示されますが、2番目のGetStockQuoteは実際にGetStockQuoteV2を呼び出す予定です。
私のPHP SoapClientは、$ client-> GetStockQuoteを呼び出すと、最初のものが自動的に呼び出されます。私の研究から、私は代わりにこのような何かをしなければなりません。
$client->__soapCall('GetStockQuote', array($request), array('soapaction'=>'GetStockQuoteV2'));
私がwsdl-modeになっても、GetStockQuoteV2ではなくGetStockQuoteが呼び出されます。
私の結論は、私は非wsdlモードで動作し、その煩わしさに対処しなければならないということでした。非wsdlモードでは、上記の__soapCallが正しいメソッドを呼び出すように見えますが、私は非wsdlモードなので、サーバーに必要な適切なAuthHeaderを構築することに問題があると思います。
私の質問は、PHP SoapClient wsdl-modeの中でsoapアクションを再マップできますか?
アプリケーションを開発するときに常にキャッシュを無効にしてsoapクライアントを実行します。 $ client = new SoapClient( 'http://somewhere.com/?wsdl'、array( 'cache_wsdl' => WSDL_CACHE_NONE));あなたのwsdlファイルを共有するかもしれません。また、無効なWS-I準拠のSOAPを使用していて、WS-I準拠モードを有効にしている場合は、両方のwsdlファイルが異なります。 –