【问题标题】:Soap Client in Perl with authentication for wsdl web servicePerl 中的 Soap 客户端,带有 wsdl Web 服务的身份验证
【发布时间】:2013-02-06 11:14:51
【问题描述】:
我正在尝试在 perl 中为带有身份验证的 JAX-WS Web 服务制作 SOAP 客户端。我无需身份验证即可与服务进行通信。但是,当我尝试与实际的网络服务(具有身份验证)进行通信时,我收到授权错误或肥皂 xml 未格式化错误。
【问题讨论】:
-
我们需要更多信息。请发布您的代码(删除密码,如果您对发布不满意,请更改 URL)。什么样的认证?您是否需要预先调用另一个服务来获取身份验证并将其添加到 HTTP 标头中?您的 SOAP 消息中是否有 auth-container?正如我所说,提供更多细节。见whathaveyoutried.com。
标签:
perl
wsdl
jax-ws
soap-client
【解决方案1】:
试试这个代码
my $user="testUser";
my $password="testPassword";
my $service_url='https://api.example.com/services/soap.wsdl';
my $client = SOAP::Lite->service($service_url);
$client->on_fault(
sub { # SOAP fault handler
my $soap = shift;
my $res = shift;
# Map faults to exceptions
if(ref($res) eq '') {
die($res);
} else {
die($res->faultstring);
}
return new SOAP::SOM;
}
);
my @headers = (
SOAP::Header->name('username')->value($user),
SOAP::Header->name('password')->value($password),
);
# make the call
my $result = $client->getVersion(@headers);
print $result . "\n\n";