use*_*459 0 perl web-services perl-module client-side soaplite
我是客户端 - 我希望调用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();
Run Code Online (Sandbox Code Playgroud)
并转储这两个对象.
你可以寻找
my $method_def = $service->{ $method_name };
my $uri = $method_def->{namespace};
my $proxy = $method_def->{endpoint}->value();
Run Code Online (Sandbox Code Playgroud)
如果一切都在那里,请使用这些值.
我不得不深入挖掘大量的SOAP :: Lite转储,以使我的SOAP客户端架构正常工作.如果你想拍摄所有麻烦,你应该知道如何调试和转储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 => [ ... ]
...
}
}
};
Run Code Online (Sandbox Code Playgroud)