11/30/2007

Web Service


Es un tema súper viejo y muy utilizado por algunos sitios, pero cuando me puse a investigar sobre el tema, los ejemplos "simples" no salían a flote y los que existían publicados contenían errores en su programación (no errores de sintaxis si no mas bien errores lógicos).

Todas las páginas que hablaban del tema copiaron y pegaron el mismo ejemplo y para variar el sitio que ocupan como referencia para el Web Service (WS) ya no ofrece el WSDL, una gran frustración ya que tenía que hacer una simple prueba con PHP.

Pero bueno, para poner a disposición de la comunidad (tengo pegado lo del software libre) o para otros sistemas computacionales mis datos almacenados en una bases de datos u otro medio, que mejor que usar WS como solución.
Un servicio web (en inglés Web service) es una colección de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet.
fuente Wikipedia

Web Service al rescate

Existía un problema, ¿Cómo dejo que otros sistemas (clientes) tengan acceso a mis datos sin que ellos utilicen una conexión directa a mis bases de datos?, la respuesta es sencilla y es utilizando WS. El WS ocupa XML como lenguaje de comunicación entre cliente y servidor, osea, yo (cliente) le envío un parámetro en formato XML al WS (servidor) y este me retorna un XML.

NuSOAP

Para los que trabajamos con PHP, esta librería nos viene como anillo al dedo. NuSOAP en un conjunto de clases que nos facilitan la conexión a un WS mediante un WSDL y la creación de un servidor de WS.

Veamos un poco de código, servidor.php:
 <?php  
 //incluimos la biblioteca de nusoap  
 require_once('nusoap/nusoap.php');  
   
 //función que estará disponible en el ws  
 function getSaludo($nombre) {  
      $saludo = "Hola $nombre";  
      //retornamos una variable tipo SOAP  
      return new soapval('return','xsd:string',$saludo);  
 }  
   
 //instanciamos un objeto de la biblioteca nusoap  
 $server = new soap_server();  
   
 //configuramos el nombre del ws  
 $server->configureWSDL('getSaludo');  
   
 //registramos las funciones que estarán disponibles en el ws  
 $server->register('getSaludo',array('nombre'=>'xsd:string'));  
   
 //recibimos los datos enviados  
 $server->service($HTTP_RAW_POST_DATA);  
 ?>  

Ahora veremos el código por parte del cliente, cliente.php:
 <?php  
 //incluimos la biblioteca de nusoap  
 require_once('nusoap/nusoap.php');  
   
 //instanciamos un objeto de la biblioteca nusoap y le pasamos como valor la dirección del WSDL  
 $client = new soapclient('http://localhost/ws/servidor.php?wsdl', true);  
   
 //llamamos a la función que declaramos en el servidor y le pasamos los parametros correspondientes  
 $result = $client->call('getSaludo', array('nombre' => 'brionescl'));  
   
 //imprimimos lo que nos retorno el objeto  
 print_r($result);  
 ?>  

Como ves, es muy sencillo aplicar esta tecnología como solución y sus prestaciones pueden ser variadas.

Fuentes

1 comentario:

Anónimo dijo...

Claro, php es uno de los tantos lenguajes que se puede utilizar en la cosntruccion de un WS, usando el nusoap todo lo hace mas facil, en cambio en Java, se usa el Axis y otras bibliotek mas. Lo mejor de todo es q puedes usar un servidor en php y cualqier tipo de cliente (ya sea.net,java,etc..) que tenga soporte para SoAp.

Besitos para mi xanxito regalon ^o^