Resistance is Futile

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
 
<?php
        function sumar($x, $y)
        {
                return $x + $y;
        }
?>
 

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
 
<?php
        require_once('nusoap.php');
        require_once('sumar.php');
 
        $server = new nusoap_server();
        $server->register('sumar');
 
        $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
        $server->service($HTTP_RAW_POST_DATA);
?>
 
  • 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
 
<?php
        require_once('nusoap.php');
        $cliente = new nusoap_client('http://<ipServidor>/<ruta>/servicio.php');
        $resultado = $cliente->call('sumar', array('x' => '3', 'y' => 4));
        print_r($resultado);
?>
 
  • Abrir la pagina PHP del cliente en su navegador favorito, debe salir en blanco sin reportar errores

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

Enlaces :

Entradas Relacionadas:

  1. Error en dotProject con la clase CTask

4 Responses to “WebService en PHP con NuSOAP”

  1. Jorge Anibal Escobar says:

    Buen dia, gracias por explicar el tema de ws en php, estoy comenznado con el, copie los codigo sugeridos y no me muestra en la pagina, podria poner los codigos o enviarmelos

    gracias por sua tencion y/o ayuda

  2. jairo says:

    hola soy novato en estos de nusoap y quiero si me pueden ayudar en hacer una suma,resta y multiplicacion,divicio del lado tanto del servidor como del cliente…
    gracias……
    o darme la idea…… gracias…
    se los agradesco

  3. luisR says:

    Estoy intentando hacer este ejercicio y me genera este error al correr servicio.php

    SOAP-ENV:Clientmethod ” not defined in service

  4. Frank says:

    Gracias por el artículo, funcionó perfecto todo el codigo. Gracias!

Leave a Reply

Powered by WordPress | Designed by Elegant Themes