1

SOAP エラーの処理に問題があり、それが自分の側にあるのか相手側にあるのかわかりません。

私は WSDL ファイルを使用しており、次のコードがあります。

use XML::Compile::WSDL11;
use XML::Compile::SOAP11;
use XML::Compile::Transport::SOAPHTTP;
my $wsdlXml = XML::LibXML->new->parse_file("pathtowsdl");
my $wsdl = XML::Compile::WSDL11->new($wsdlXml);
my $call = $wsdl->compileClient('Add');
my %param = ('param1'   =>  'xxx',
             'param2'   =>  'xxxx',
             'param3'   =>  'xxxx',
             'Name'     =>  {
                'first' =>  'xxx',
                'last'  =>  'xxx',
              });
my ($response, $trace) = $call->(\%param);

正しいパラメーターでそれを呼び出すと、すべてがあなたが思うように機能します。探している結果を持つハッシュ参照の場合は $response です。

ただし、過ちを犯した場合、何も返されません。$response には何も含まれていません (Data::Dumper による)。

問題は、$trace には石鹸の封筒が入っているということです。SOAP エンベロープは、成功と失敗/障害の両方で $trace にありますが、成功の場合のみ $response に何かがあります。失敗の場合、エンベロープにある「faultType」と「faultData」は $response にあります.

私は何か間違ったことをしていますか?私が読んだすべてのことから、何か違うことをする必要はないように思えます。障害が発生した場合は、$response->{'fault'} のようなものが必要ですが、私が言ったように、$response は空です。

私が探しているもののアイデアはありますか?

ティア!

4

1 に答える 1

0

おそらくあなたの質問に対する答えではありませんが、まだコメントだけを投稿することはできないので、ここにアイデアがあります:soapUI(あなたの目標に十分な無料バージョンもあります)または同様のソフトウェアを使用して、SOAPサービスをテストしてください問題が SOAP サービス側ではなくコードにあることを確認してください。

于 2012-05-06T14:26:04.860 に答える