Perl SOAP :: Lite和请求对象的服务描述

时间:2011-08-12 01:22:39

标签: perl wsdl soaplite

我正在使用Perl的SOAP::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方式,似乎一切都会正常工作 - 但这会使得预定义服务定义的帮助失败。

我想如何在不首先打电话的情况下从服务定义访问请求对象?真的鸡和鸡蛋问题......

谢谢!

2 个答案:

答案 0 :(得分:1)

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

你通过添加适当的处理程序来完全,因为传输不是空的

答案 1 :(得分:0)

向传输添加处理程序,例如,请参阅LWP :: Debug,有关文档,请参阅LWP :: UserAgent,或者参见perlmonks.org/?node_id=904166