0

私はクライアントです - Web サービスのメソッドを呼び出したいと思っています。

Web サービス アドレス (.svc サフィックス) があり、メソッドの名前、戻り値、およびそれらの引数があります。

サービスは WCF (HTML エンドポイント) で実装されます。これらのメソッドを で呼び出したいと思いますSOAP::Lite。URI、プロキシ、およびメソッドを正確に呼び出す方法について何を書く必要がありますか?

4

1 に答える 1

5

あなたが設定した

  1. proxyエンドポイントへ
  2. uri(または最新バージョンではns) メソッド定義の名前空間に。

これを行う最も簡単な方法の 1 つは、次のように WSDL URI を使用してSOAP::Schemaオブジェクトを作成することです。

my $schema = SOAP::Schema->new( schema_url => $destination_URL )->parse();
my $services = $schema->services();

そして、それらの 2 つのオブジェクトをダンプします。

あなたが探すことができます

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 に答える