Вы устанавливаете
-
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 => [ ... ]
...
}
}
};