2012-02-29 14 views
1

私はperl webserviceの新機能です。Perl wsdl webservice call

私はwsdl webservice関数を呼び出していますが、私は400の不正なリクエストエラーとして応答しています。私は多くのサイトを試してみましたが、成功することはできませんでした。この問題の解決に私を助けてください。以下は私のコードです。

use SOAP::Lite; 
my $lite = SOAP::Lite -> service('http://localhost:8080/service.svc?wsdl'); 
my $arg1 ="SRC"; 
my $arg2 = "ARG"; 
my @arg3 = ('test1','test2','test3'); 
my @res = $lite->Func($arg1,$arg2,@arg3); 
print "@res"; 

答えて

1

私はちょうど似たproblemを持っていたSOAP::Liteは、複雑なデータ構造を扱うに関するバグを有していても良いように思われました。

SOAPメソッド(Func)が3つの引数を必要とする場合は、最後のものは配列を参照する必要があります。

また、use SOAP::Lite qw(trace)でリクエストエンベロープをデバッグすることもできます。あなたはSOAPで制限されていない場合は:: Liteの

+0

参考として渡してみましたが、依然として悪いリクエストエラーと言われました。:( – Naga

+0

@Naga:次は、あなたのリクエストエンベロープをデバッグすることです。 –

0

、私はWSDLとASMX Webサービスの間にあるどのくらいの差がわからないんだけどXML::Compile::SOAP::Client

+0

運がいいわけではありません...同じエラーを出してしまいました.... 400悪いリクエスト.... – Naga

0

を見て喜ばせるためにあなたを要求します。そうでなければ、このコードサンプルを試してみてください。

my $soap = SOAP::Lite 
    -> uri('http://foo.com') 
    -> on_action(sub { join '/', 'http://foo.com', $_[1] }) 
    -> proxy('http://foo/services/GetEmailAddress/Service.asmx'); 

    my $method = SOAP::Data->name('GetEmailAddress') 
    ->attr({xmlns => 'http://foo.com/'}); 

    my @params = (SOAP::Data->name(username => $user)); 
    my $email = $soap->call($method => @params)->result; 

入力はユーザ名、出力は電子メールアドレスです。 ASMX Webサービスは.NET 3で作成されたと私は信じている。

私はこれがどのように動作するかについて知っているすべて私はhttp://msdn.microsoft.com/en-us/library/ms995764.aspxから学んだ。

+0

上記を試しましたが...このようなエラーが発生しました "受信機で処理できませんこれは、契約の不一致(送信者と受信者の間の不一致)または送信者と受信者の間のバインド/セキュリティ不一致のいずれかが原因である可能性があります。送信者と受信者が同じ契約をしていることを確認し、同じバインディング(セキュリティ要件、例えばメッセージ、トランスポート、なしを含む) " – Naga

関連する問題