Perl SOAP :: Lite и описание сервиса для объекта запроса - PullRequest
6 голосов
/ 12 августа 2011

Я использую Perl SOAP::Lite для доступа к удаленному веб-сервису, определенному WSDL.Это означает, что у меня есть:

use strict;
use Data::Dumper;
use SOAP::Lite +trace => 'debug';

my $service = SOAP::Lite->service('http://path/wsdl');

Хорошо, пока.Проблема в том, что мне нужен доступ к объекту HTTP::Request для отправки пользовательских заголовков HTTP-запросов (а я не говорю о заголовках аутентификации).Похоже, я могу получить доступ к объекту запроса после успешного вызова:

my $result = $service->getClient('parameters');
print Dumper($service->transport->http_request);

Это даст мне правильный HTTP::Request объект:

$VAR1 = bless( {
             '_content' => '',
             '_uri' => undef,
             '_headers' => bless( {}, 'HTTP::Headers' ),
             '_method' => undef
           }, 'HTTP::Request' );

Если я попытаюсь получить доступобъект запроса перед выполнением autoDispatch (часть $service->getClient), транспортный объект пуст, и у меня нет способа изменить запрос.Кажется, что все бы хорошо работало, если бы я шел по пути SOAP::Lite->proxy - но это сводит на нет полезность наличия предопределенного определения сервиса.

Любые идеи, как я предполагаю получить доступ к объекту запросаиз определения услуги без необходимости сначала звонить?Проблема с курицей и яйцом на самом деле ...

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 августа 2011

То, что я пытаюсь сделать, это заполнить транспорт, прежде чем делать сервисный вызов.

И вы делаете именно это , добавляя соответствующий обработчик, потому что транспорт не пустой

0 голосов
/ 14 августа 2011

Добавьте обработчик к транспорту, см., Например, LWP :: Debug, см. LWP :: UserAgent для документации или perlmonks.org/?node_id=904166, например,

...