Categorías destacadas
programacion php    
Artículo
7
¡votar!

 Web Services: XML-RPC, SOAP, sobre PHP, Perl, y otros conceptos


SOAP sobre Perl

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;
Publicado por:
Martin Valdivia
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon