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 は空です。
私が探しているもののアイデアはありますか?
ティア!