2017-06-30 2 views
0

J'ai des problèmes pour utiliser l'exemple le plus basique de SOAP :: Lite.Utilisation basique de SOAP :: Lite

Initialement, je recevais une erreur à propos de la non-concordance de version, donc j'ai ajouté le soapversion('1.2') comme this question.

#!/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; 

Je ne reçois erreur de version, au lieu que je reçois: result = $VAR1 = 'Error';

Répondre

0

Je suppose que vous voulez utiliser un service. Si c'est le cas, utilisez la méthode proxy au lieu de service. Voir la documentation proxy:

The proxy is the server or endpoint to which the client is going to connect. This method allows the setting of the endpoint, along with any extra information that the transport object may need when communicating the request.

This method is actually an alias to the proxy method of 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 affiche une erreur:

result = $VAR1 = { 
      'FahrenheitToCelsiusResponse' => { 
              'FahrenheitToCelsiusResult' => 'Error' 
             } 
     }; 

Mais il y a un problème général avec un service FahrenheitToCelsius.