Perl中的Web服务客户端
问题描述:
我是客户端 - 我希望调用Web服务的方法。Perl中的Web服务客户端
我有一个Web服务地址(.svc后缀),我有方法的名称,返回值和它们的参数。
该服务是用WCF(HTML终点)实现的。我希望通过SOAP::Lite
来调用这些方法。我应该为URI,代理以及我怎么称呼这些方法写什么?
答
您设置
- 的
proxy
到端点并 - 的
uri
(或最新版本ns
)在方法定义的命名空间。
一个做到这一点的最简单的方法是简单地使用WSDL URI并创建一个SOAP::Schema
对象有了它,就像这样:
my $schema = SOAP::Schema->new(schema_url => $destination_URL)->parse();
my $services = $schema->services();
和转储这两个对象。
你可以找
my $method_def = $service->{ $method_name };
my $uri = $method_def->{namespace};
my $proxy = $method_def->{endpoint}->value();
,并使用这些值,如果一切都在那里。
为了让我的SOAP客户端体系结构能够正常工作,我不得不通过大量的SOAP :: Lite转储。如果你想拍摄所有的麻烦,你应该知道如何调试和转储Perl对象。
我会告诉你一个服务的匿名转储:
$services = {
ServiceName => {
MethodName => {
endpoint => bless({
_attr => {},
_name => 'location',
_signature => [],
_value => [
# v-- This value you pass to SOAP::Lite->proxy
'http://some.domain.com/WebServices/SOAPEndpoint.asmx'
]
}, 'SOAP::Custom::XML::Data'
),
# v-- This value you pass to uri/default_ns/ns
namespace => 'http://some.domain.com/',
parameters => [ ... ]
...
}
}
};
该死的,你写一个伟大的答案,一个可怕的问题!现在我无法删除它:P – 2011-04-08 09:52:11