Ты устанавливаешь
proxy
до конечной точки и
uri
(или в самой последней версии ns
) к пространству имен в определении метода.
Один из самых простых способов сделать это — просто использовать URI WSDL и создать с ним объект 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::Lite, чтобы заставить работать архитектуру моего клиента SOAP. Вы должны знать, как отлаживать и создавать дамп объектов 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 => [ ... ]
...
}
}
};
person
Axeman
schedule
07.04.2011