Perl wsdl webservice电话

时间:2012-02-29 20:38:39

标签: perl soap wsdl

我是perl webservice电话的新手。

我正在调用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"; 

3 个答案:

答案 0 :(得分:1)

我刚才有类似的problem,似乎SOAP::Lite可能有一个关于处理复杂数据结构的错误。

无论如何,如果你的SOAP方法(Func)需要3个参数,最后一个应该是对数组的引用。

此外,使用use SOAP::Lite qw(trace),您可以调试请求信封。

答案 1 :(得分:0)

如果您不限制SOAP :: Lite,我会请您查看XML::Compile::SOAP::Client

答案 2 :(得分:0)

我不确定WSDL和ASMX Web服务之间有多大差异。如果不多,请​​尝试这个适用于我的代码示例。

  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学到的所有知识都是我知道的。