2011-08-04 15 views
0
try 
    { 
    $client = new \SoapClient($wsdlUrl, array(
     'cache_wsdl' => 0, 'exceptions' => true, 'trace' => true)); 

    $client->getPage($parameter); 
    } 
    catch(\Exception $e) 
    { 
    die("exception"); 
    } 

これはSOAPリクエストを実行するものです。 $ wsdlUrlはWSDLのURLを保持し、$パラメータはXMLドキュメントを保持します。非常に奇妙なSoapClientの問題

すべてが魅力的です。

XML文書に$パラメータでノードを追加するだけで、致命的なエラーが発生します。

これは必ずしもそう奇妙ではありませんが、何weiredさは、3つの観測、次の組み合わせです:trueに設定されている

1)例外を....しかし、例外は/ このだったB/Cがスローされません私はキャッチステートメントに例外の前にバックスラッシュを置くのを忘れていました。

2)の代わりにエラーが記録されます。

PHP Fatal error: SoapClient::SoapClient(): 
'uri' option is required in nonWSDL mode in /var/w[...] 

3)が、WSDLのURLを提供し、もちろん有効で、としてすべてが新しいノードの追加をスキップした後、再びだけで正常に動作しています。 wsdlパラメータには影響しません。

+0

ちょうど助けようとしている:「奇妙な」綴りは、奇妙なことです。 –

答えて

1

わかりました。問題の原因を追跡しました。本当にその質問に満足のいく回答はありませんが、学ぶことはほとんどありません! :)

重要なことは、リクエストがSOAPサーバーによって送信され、処理されたことです。 しかし、サーバーはエラーで応答します。

ので、当然、何のWSDLなし接続パラメータに関するない致命的なエラーが何の要求を意味しませんトリガされていても送られてきた - 何のWSDLが提供されていない場合はC/B私の意見では非常にカウンタ論理的です接続パラメータもない場合、リクエストはどのように実行されますか?

EDIT

は、コード内の別のバグがあります。例外の前にバックスラッシュを置くのを忘れてしまった!これがなければ、Exceptionクラスは参照されません。

例外がスローされ、キャッチされます。

関連する問題