2011-04-07 95 views
0

我是客戶端 - 我希望調用Web服務的方法。Perl中的Web服務客戶端

我有一個Web服務地址(.svc後綴),我有方法的名稱,返回值和它們的參數。

該服務是用WCF(HTML終點)實現的。我希望通過SOAP::Lite來調用這些方法。我應該爲URI,代理以及我怎麼稱呼這些方法寫什麼?

回答

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

該死的,你寫一個偉大的答案,一個可怕的問題!現在我無法刪除它:P – 2011-04-08 09:52:11