0

我是客户 - 我希望调用 Web 服务的方法。

我有一个 Web 服务地址(.svc 后缀),我有方法的名称、返回值和它们的参数。

该服务使用 WCF(HTML 端点)实现。我希望通过调用这些方法SOAP::Lite。我应该为 URI、代理写什么以及如何准确地调用这些方法?

4

1 回答 1

5

你设置

  1. proxy端点和
  2. (或在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 => [ ... ]
            ...
        }
    }
};
于 2011-04-07T19:31:14.197 回答