Cliente Web Service en Perl

En el presente documento vamos a aprender a llamar a un Servicio Web (Web Service) con Perl.

Como ya sabemos, toda la comunicación con un servicio Web es realizada mediante SOAP (siglas de Simple Object Access Protocol) y eso nos permite el conectarnos a cualquier Servicio Web sea cual sea el lenguaje en el que ha sido programado ya que SOAP no es más que XML. Hay implementaciones de SOAP a nivel cliente y servidor en innumerables lenguajes como por ejemplo C, C++, Perl, Java, Ruby, K, etc. En este manual usaremos SOAP Lite, un modulo Perl que es una forma muy simple de usar el protocolo.

¿Qué necesitamos?

Para probar los ejemplos de este tutorial debemos contar con:

– Un web server que ejecute CGI, cualquiera (Apache Tomcat por ejemplo)

– Un Web Service funcionando (Por ejemplo Axis2)

– Un intérprete de Perl en la misma maquina

– El modulo SOAP::Lite para el sistema operativo que estemos usando

Descarga de SOAP Lite:

Lo primero que deberemos hacer es descargar SOAP Lite. Los siguientes ejemplos funcionan correctamente con SOAP Lite 0.60. Aunque no es la última versión, a mi me ha dado menos problemas que usando la 0.710.08. Puedes intentar utilizar la última versión disponible y si no consigues que funcione inténtalo con la 0.60.

Instalación de SOAP Lite:

La instalación de SOAP Lite es bastante sencilla. Simplemente debemos desempaquetarlo y, una vez situados dentro del directorio creado realizar las siguientes acciones como root:

     > perl Makefile.PL
     > make
     > make test
     > make install

Con esto, si no hemos obtenido ningún mensaje de error, ya tendremos SOAP Lite instalado correctamente!

A continuación ya podremos crear nuestra aplicación para conectarnos con el WS.

Creando el Cliente:

Creamos el archivo connet.pl (podéis llamarlo como queráis lógicamente)

     > vim connect.pl

En él introducimos las siguientes líneas:

# Declaramos el uso del paquete SOAP::Lite
 
use SOAP::Lite;
# Definimos el servicio al que nos vamos a conectar
 
$service = SOAP::Lite
     -> uri('http://main/xs')
     -> proxy('http://localhost:8080/axis2/services/sayHello');

uri(): Debemos introducir aquí el “namespace” de nuestro Servicio Web. Si no lo conocemos o no nos lo sabemos de memoria podemos encontrarlo en el WSDL del servicio. Este lo podemos encontrar si añadimos “?wsdl” a la ruta del Servicio Web en cualquier explorador. La variable que nos da esta información es targetNamespace.

...
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://main/xs">
...

proxy(): Aquí debemos introducir el URL del Servicio.

# Hacemos la llamada y recogemos el resultado:
 
$result = $service -> nombreMetodo("parametro1", "parametro2", 3) -> result();

nombreMetodo(): Este es el nombre del método que llamaremos de nuestro servicio Web y en él introduciremos los datos en el mismo orden que éste los recibirá. Los Strings serán insertados entre comillas y los datos numéricos sin ellas.

# Mostramos el resultado por pantalla y añadimos un salto de línea (al estilo C)
 
print $result, "\n";

Con esto ya tenemos nuestro Cliente en Perl para conectarnos a un Web Service.

Finalmente hemos obtenido:

use SOAP::Lite;
$service = SOAP::Lite
     -> uri('http://main/xs')
     -> proxy('http://localhost:8080/axis2/services/sayHello');
$result = $service -> nombreMetodo("parametro1", "parametro2", 3) -> result();
print $result, "\n";
Anuncios

2 Responses to Cliente Web Service en Perl

  1. Daniel Ruoso says:

    Hi,

    Nice article, but SOAP::Lite is old and doesn’t support most of the SOAP and WSDL spec. Take a look at http://daniel.ruoso.com/categoria/perl/soap-today for an explanation of how to use SOAP with more recent modules with a better spec support.

    daniel

  2. Daniel Ruoso says:

    Btw… sorry for posting in english, but I can only read spanish, not write.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: