WebService en PHP con NuSOAP

phpAunque en PHP5 existe una extension para crear servicios web basados en SOAP, algunos servidores donde posiblemente alojemos nuestra aplicacion no tienen habilitada la extension y por tal motivo debemos buscar alternativas para la creacion de los webservices.

En el 2002 Dietrich Ayala escribio una libreria llamada NuSOAP que permite implementar webservices en PHP incluyendo la version 4 y 5, esta libreria es una de las mas populares en la costruccion de servicios web en PHP pues tiene soporte para diferentes versiones de SOAP, como tambien es posible crear servicios web que generen los descriptores de los webservices (WSDL) y soporte de tipos de datos, aunque la implementacion suele complicarse cuando se utilizan estas caracteristicas.

Implementaremos un webservice basado en una funcion llamada sumar de la cual crearemos el webservice y su cliente utilizando NuSOAP, a continuacion se describen los pasos :

  • Abrir una terminal
  • Ir al directorio web donde se creara el servicio
  • Descargar la libreria NuSOAP del repositorio en SourceForge
    http://nusoap.cvs.sourceforge.net/viewvc/nusoap/lib/
  • En este caso descargaremos la version 1.121
    wget http://nusoap.cvs.sourceforge.net/viewvc/*checkout*/nusoap/lib/nusoap.php?revision=1.121

Implementar la Funcion a Utilizar :

  • Utilizando su editor favorito crear un archivo donde se implemente la funcion :
    (utilizaremos una funcion sumar que recibe dos numero y retorna su suma)
  • Crear el archivo sumar.php
  1.  
  2. <?php
  3. function sumar($x, $y)
  4. {
  5. return $x + $y;
  6. }
  7. ?>
  8.  

Implementar el Servicio Web :

  • Utilizando su editor favorito crear un archivo donde se cree el servidor
  • Crear el archivo servicio.php
  • Este incluye la libreria NuSOAP y la funcion creada anteriormente
  • Crea un servidor soap e incluye la funcion
  • Despacha el servicio con la informacion suministrada
  1.  
  2. <?php
  3. require_once('nusoap.php');
  4. require_once('sumar.php');
  5.  
  6. $server = new nusoap_server();
  7. $server->register('sumar');
  8.  
  9. $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
  10. $server->service($HTTP_RAW_POST_DATA);
  11. ?>
  12.  
  • Abrir la pagina PHP en su navegador favorito, debe salir en blanco sin reportar errores

    http://<servidor>/<ruta>/servicio.php

Implementar el Cliente :

  • En este caso implementaremos un cliente en el lenguaje PHP para consumir el servicio.
  • Utilizando su editor favorito crear un archivo cliente.php
  • Para realizar el llamado se debe especificar como argumentos el nombre de la fuinciony en un arreglo asociativo, los nombres de las variables con sus respectivos valores
  1.  
  2. <?php
  3. require_once('nusoap.php');
  4. $cliente = new nusoap_client('http://<ipServidor>/<ruta>/servicio.php');
  5. $resultado = $cliente->call('sumar', array('x' => '3', 'y' => 4));
  6. print_r($resultado);
  7. ?>
  8.  
  • Abrir la pagina PHP del cliente en su navegador favorito, debe salir en blanco sin reportar errores

    http://<servidor>/<ruta>/cliente.php

Enlaces :