首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl wsdl wsdl服务调用

Perl wsdl wsdl服务调用
EN

Stack Overflow用户
提问于 2012-03-01 04:38:39
回答 3查看 3.1K关注 0票数 1

我是perl webservice call的新手。

我正在调用一个wsdl webservice函数,我得到的响应是400错误请求错误。我试着用谷歌搜索了很多网站,但都不能成功。请帮我解决这个问题。下面是我的代码。

代码语言:javascript
复制
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"; 
EN

回答 3

Stack Overflow用户

发布于 2012-03-01 06:32:18

我刚刚有了类似的problem,似乎SOAP::Lite在处理复杂数据结构方面可能有一个bug。

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-03-01 14:28:41

如果您在SOAP::Lite上没有受到限制,我将请求您查看一下XML::Compile::SOAP::Client

票数 0
EN

Stack Overflow用户

发布于 2012-03-02 01:13:37

我不确定WSDL和ASMX web服务之间有多大的区别。如果不是很多,请尝试这个代码示例,它对我有效。

代码语言:javascript
复制
  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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9506246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档