我是客户 - 我希望调用 Web 服务的方法。
我有一个 Web 服务地址(.svc 后缀),我有方法的名称、返回值和它们的参数。
该服务使用 WCF(HTML 端点)实现。我希望通过调用这些方法SOAP::Lite
。我应该为 URI、代理写什么以及如何准确地调用这些方法?
我是客户 - 我希望调用 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 => [ ... ]
...
}
}
};