[英]Basic SOAP::Lite usage
我在使用SOAP :: Lite的最基本示例時遇到了麻煩。
最初,我遇到有關版本不匹配的錯誤,因此我根據此問題添加了soapversion('1.2')
。
#!/usr/bin/perl -w
use strict;
use SOAP::Lite;
use Data::Dumper;
my $service = SOAP::Lite->service('https://www.w3schools.com/xml/tempconvert.asmx?WSDL');
$service->soapversion('1.2');
$service->serializer->soapversion('1.2');
my $result = $service->FahrenheitToCelsius('212');
print "result = " . Dumper $result;
我不再得到版本錯誤,而是得到: result = $VAR1 = 'Error';
我想你想使用一些服務。 如果是這樣,請使用proxy
方法代替service
。 請參閱代理文檔:
代理是客戶端將要連接到的服務器或端點。 此方法允許設置端點以及傳輸對象在傳達請求時可能需要的任何其他信息。
該方法實際上是SOAP :: Transport代理方法的別名。
f2c.pl
#!/usr/bin/perl -w
use strict;
# tracing for debugging purposes
# use SOAP::Lite +trace => "debug";
use SOAP::Lite;
use Data::Dumper;
my $service
= SOAP::Lite->proxy('https://www.w3schools.com/xml/tempconvert.asmx?WSDL')
# use on_action cb to override default SOAPAction value
->on_action(
sub {
return join '/', "https://www.w3schools.com/xml", $_[1];
}
);
my $result = $service->FahrenheitToCelsius('212');
# result is an instance of SOAP::SOM
# see https://metacpan.org/pod/distribution/SOAP-Lite/lib/SOAP/SOM.pod
$result->fault && die $result->faultstring;
print "result = " . Dumper $result->body;
perl f2c.pl
顯示錯誤:
result = $VAR1 = {
'FahrenheitToCelsiusResponse' => {
'FahrenheitToCelsiusResult' => 'Error'
}
};
但是FahrenheitToCelsius服務存在一個普遍問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.