SOAP::Lite es una implementaci�n de SOAP para Perl. Se encuentra como m�dulo en el CPAN (Comprehensive Perl Archive Network). Con SOAP::Lite version 0.52 o superior podemos incorporar cualquier servicio SOAP a nuestros programas.
La instalaci�n podemos llevarla a cabo de dos formas: bajando los m�dulos como ficheros comprimidos, compil�ndolos e instal�ndolos o bien de forma autom�tica, mediante la interfaz del CPAN que posee Perl:
perl -MCPAN -e shell install SOAP::Lite quit
En cualquier caso, debemos instalar los siguientes m�dulos:
HeadParser SOAP SOAP::Lite URI Math::Random
Si no queremos instalarlos uno a uno, podemos bajar una "imagen" con los m�dulos instalados, descomprimirla en el directorio raiz de la cuenta propia, y despu�s, en los programas en Perl, indicar d�nde est�n las librer�as que acabamos de instalar:
use lib '.../perl'; use lib '.../perl/lib'; use SOAP::Lite;
Veamos como ejemplo el Servicio Web de traducciones de BabelFish, programando en Perl un cliente SOAP, (usando SOAP::Lite) que acceda a este servicio remoto gratuito.
En primer lugar indicamos con el m�todo proxy de la clase, cu�l es el servidor y camino completo hasta el servicio. Con el m�todo uri indicaremos el nombre del servicio invocado, y por �ltimo, utilizando el m�todo de ese servicio, pasamos los par�metros (en este caso la cadena de texto a traducir y los idiomas origen y destino). El c�digo que podr�a hacer esas peticiones ser�a:
#!/usr/bin/perl -w
use SOAP::Lite;
print SOAP::Lite
->proxy('http://services.xmethods.net/perl/soaplite.cgi')
->uri('urn:xmethodsBabelFish')
->BabelFish("es_en","Hola, mundo")
->result;
1;
Los idiomas origen y destino vienen indicados mediante abreviaturas:
Ingl�s, en Franc�s, fr Alem�n, de Espa�ol, es Italiano, it Portugu�s, pt Ruso, ru
AVISO:Es posible que cuando ejecutemos estos scripts, nuestra m�quina se encuentre detr�s de un proxy. En ese caso, debemos indicarle a Linux cu�l es la forma de salir al exterior. Lo configuramos usando la variable de entorno HTTP_proxy:
export HTTP_proxy="http://www.miproxy.com:3128" setenv HTTP_proxy "http://www.miproxy.com:3128"
el primer caso se utilizar� cuando nuestro Shell sea el bash, mientras que el segundo, cuando sea el tcsh.
La invocaci�n del API de Google desde Perl ser�a similar.
Referencia: GoogleSearch.pl
#!/usr/bin/perl -w
use SOAP::Lite;
my $query = "linux+programacion";
my $googleSearch = SOAP::Lite -> service("http://api.google.com/GoogleSearch.wsdl");
my $result = $googleSearch -> doGoogleSearch(
"iwnUXUtHj3bteg5FWfBJDwui3SPeB+iy", # Clave de acceso al API de Google
$query, # Palabras clave de b�squeda
0, # Indice del primer resultado mostrado
10, # Numero de resultados obtenidos
"false", # Filtro
'', # Restricci�n
"false", # B�squeda Segura
'', # lr
'latin1', # ie
'latin1' # oe
);
print $result->{resultElements}->[0]->{title};
print "\n";
print $result->{resultElements}->[0]->{URL};
print "\n";
1;