Perl中的Web服务客户端

问题描述:

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

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

该服务是用WCF(HTML终点)实现的。我希望通过SOAP::Lite来调用这些方法。我应该为URI,代理以及我怎么称呼这些方法写什么?

您设置

  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 => [ ... ] 
      ... 
     } 
    } 
}; 
+3

该死的,你写一个伟大的答案,一个可怕的问题!现在我无法删除它:P – 2011-04-08 09:52:11