Discussion:
Perl SOAP ?
(trop ancien pour répondre)
Chloe Sival
2011-08-10 15:20:33 UTC
Permalink
Bonjour,

Alors je suis pas très très perl, je m'en sert pour des petits
scripts qui me facilite la vie.

La je dois faire un script qui interroge un web service, j'ai bien un
fichier wsdl mais j'y pige quedal ...

Je dois me connecter a une url, envoyer un login/pass puis
passer une requete pour recevoir la reponse désiré.

Quelqu'un a deja fait cela ?

merci d'avance
chloe
Emmanuel Florac
2011-08-10 21:25:33 UTC
Permalink
Post by Chloe Sival
Quelqu'un a deja fait cela ?
Tu as réussi à te connecter à l'url? Le mieux c'est d'utiliser
WWW::Mechanize, comme ceci :

use strict;
use warnings;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();

my $url="http://watever/?wut";

$response = $mech->get( $url );

Ensuite tu peux utiliser $response... Voir la doc de WWW::Mechanize...
--
Socialism never took root in America because the poor see themselves not
as an exploited proletariat, but as temporarily embarrassed millionaires.
John Steinbeck
luc2
2011-08-11 07:43:22 UTC
Permalink
tu tape "perl soap" sur google
Freddy Dissaux
2011-08-11 09:36:01 UTC
Permalink
Post by Chloe Sival
Bonjour,
Bonjour,

Début de piste:

#!/usr/bin/perl
use strict;
use warnings;

use English qw(-no_match_vars);
use Encode;

sub usage {
my $name = shift;
print <<"EOF"
$name method file.xml
EOF
;
return;
}

if (scalar @ARGV != 2) {
usage($PROGRAM_NAME);
exit 1;
}

my $method = shift;
my $file_name = shift;

if (! -f $file_name) { usage($PROGRAM_NAME); }
open my $fh, '<', $file_name or die "open '$file_name': $!\n";
my $xml_request = do { local $INPUT_RECORD_SEPARATOR = undef; <$fh> };
close $fh or die "close '$file_name': $!\n";

my $soap = SOAP::Lite->new(
uri => $ENV{SOAP_URI},
proxy => $ENV{SOAP_PROXY},
);

my $xml_header = <<"EOF"
<username>USERNAME</username>
<password>PASSWORD</password>
<logicaladdress>$method</logicaladdress>
EOF
;

my $header = SOAP::Header->type('xml' => encode('utf8', $xml_header));
my $request = SOAP::Data->type('xml' => $xml_request);
my $res = $soap->$method($header, $request);

if (!$res->fault) {
print '[Ok] [', $res->result, ']: [', $res->paramsout, '] [',
$res->faultstring, "]\n";
exit 0;
}

print '[Err] [', $res->faultcode, ']: [', $res->faultstring, "]\n";
--
freddy <point> dsx <arobase> free <point> fr
Loading...