use strict; use locale; use SOAP::Lite; use XML::Simple; use Encode; if ( $#ARGV != 0 ) { die "Usage : $0 requete\n"; } my $requete = encode ("utf8", $ARGV[0]); #Insérez ci-dessous l'identifiant obtenu auprès de Live Search my $identifiant = "xxx" ; my $service = SOAP::Lite ->proxy("http://soap.search.msn.com:80/webservices.asmx?wsdl"); my $requete_SOAP = prepare_requete ($requete, 0, 10); my $reponse = $service->Search( $requete_SOAP ); if ( $reponse->fault ){ print "Erreur de Live Search : ", $reponse->faultdetail ; } else { print "Total : ", $reponse->valueof( "//Total" ), "\n"; my @resultats = $reponse->valueof( "//Result" ); foreach my $document (@resultats){ print "Titre : ", normalise_latin1 ( $document->{"Title"} ),"\n"; print "URL : ", $document->{"Url"},"\n"; print "Description : ", normalise_latin1 ( $document->{"Description"} ), "\n"; print "---\n"; } } sub prepare_requete { my ( $r, $d, $n ) = @_; my $requete_structure = { "AppID" => [ $identifiant ], "Query" => [ $r ], "CultureInfo" => [ "fr-FR" ], "Requests" => [ { "SourceRequest" => [ { "Source" => [ "Web" ], "Offset" => [ $d ], "Count" => [ $n ] } ] } ] }; my $requete_XML = XMLout( $requete_structure, RootName=> "Request" ); return SOAP::Data->type( "xml" => $requete_XML ); } sub normalise_latin1 { my $chaine = shift @_; $chaine =~ s/[\x{2018}\x{2019}]/\'/g; $chaine =~ s/[\x{201C}\x{201D}]/\"/g; $chaine =~ s/[\x{2013}\x{2014}]/-/g; $chaine =~ s/\x{2026}/.../g; $chaine =~ s/\x{0152}/OE/g; $chaine =~ s/\x{0153}/oe/g; $chaine =~ s/[^\x{0000}-\x{00FF}]//g; return $chaine; }