6

我正在使用 PerlSOAP::Lite访问由 WSDL 定义的远程 Web 服务。这意味着我有:

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——但这​​破坏了拥有预定义服务定义的帮助。

任何想法我想如何从服务定义访问请求对象而无需先拨打电话?鸡和蛋的问题真的...

谢谢!

4

2 回答 2

1

我想要完成的是在进行服务调用之前填充传输。

你可以通过添加适当的处理程序来做到这一点,因为传输不是空的

于 2011-08-16T06:14:27.590 回答
0

Add a handler to the transport, see LWP::Debug for example, see LWP::UserAgent for documentation, or perlmonks.org/?node_id=904166 for example

于 2011-08-13T20:56:30.633 回答