ManuelRomero/DAW/dwes/serviciosWebSoap

Práctica de servicos web con SOAP

 * A partir de la descripción de la práctica.
 * Tenemos una serie de métodos o funciones que queremos ofrecer a otras aplicacones web.

Fichero del servicio web

 * server.php: en él temenos los métodos que qeremos ofrecer.
 * La clase DB.PHP contiene la parte del modelo de datos (conexión a bd, y métodos para recuperar información concreta.
 * La clase producto.php tiene los atributos del producto y sus métodos get and set.
 * Lo que queremos es ofrecer estos métodos para que otras aplicaciones las usen
 * Si tenemos la situación que conocemos perfectamente estos métodos, no necesitaremos ningún fichero wsdl que los describa, sino que directamente los podemos usar.
 * La prctica tiene dos partes, una sin usar el fichero wsdl y otra usándolo.

PARTE 1 DE LA PRÁCTICA SIN FICHERO WSDL

 * Crearemos un objeto de la case SoapServer para que haya un obejto en el servidor esperadno a que haya una solicitud del cliente y atenderla
 * Para ello crearemos el fichero servicio.php
 * Observa que creamos un objeto del tipo SoaoServer
 * Cargamos en ese objeto la clase que contine los métodos del servicio
 * con handle generamos la respuesta del fichero html.

Usar el servicio

 * Ahora ya tenemos el servicio y el objeto que esta escuchando esperando que alguien quiera usarlo
 * implementamos el fichero cliente
 * En él instanciamos un objeto de la clase SoapClient como se ve en el fichero descrito a continuación

USANDO WSDL

 * Ahora estamos en el caso de que esta interfaz de los métodos (nombre, parámetros y valor de retorno) no son conocidas por los que las quieren usar
 * Para ello las debemos publicar es un documento WSDL.
 * Para generar este docuemento tenemos utilidades que automatzan (a mano es algo complicado, cuando menos tedioso ).
 * Pasos a realizar
 * 1) Primero debemos comentar los métodos con las directivas o marcas usados por lenguejes que generan documentación como javadoc o phpDocumentor
 * Entre las más importantes usarmeos @param @return
 * Nos quedará
 * Entre los tipos usaremos int para entero string para caracter string[] para un array o registro
 * Una vez hecho esto procedemos a generar un fichero php para que usando [WSDLDocument|http://code.google.com/p/wsdldocument/] se nos genere el fichero correspondiente
 * como indican en los apuntes escribimos el fichero genera.php
 * Revisa la cabecera del xml por si tubieras que añadir algún nombre de dominio ns, fíjate en los ejemplos de los apuntes
 * Coge el contenido que sale por la pantalla del navegador y pégala en un fichero. nombralo con extensión xml

Generando la clase a partir del wsdl wsdl2php
Ahora tenemos el xml que describe el servicio soap el fichero serviciow.wsdl.xml Nuestro objeto servidor deberá publicar el interfaz de los métodos que servimos

http://sourceforge.net/projects/wsdl2php/ sudo pear install wsdl2php-0.2.1-pear.tgz wsdl2php serviciow.wsdl.xml y generamos un fichero. Si observamos al final del fichero wsdl
 * Ahora instalamos la herramienta wsdl2php para generar un fichero php en la máquina cliente que contiene los métodos del servidor que podemos usar según las especificaciones del fichero wsdl
 * Descargamos
 * Instalamos
 * ahora generamos la clase a partir de la especificación wsdl y podemos usar en el cliente
 * El nombre del fichero que genera es ServerW.php
 * Si analizamos este fichero
 * Tenemos las clases que el servidor nos ofrece y podemos usar facilmente

Usando las clases del servicio

 * Ahora usamos la clase generada anteriormente
 * Esta clase que extiende SoapCliente
 * En ella tenemos los métodos que el servidor ofrece como un servicio
 * Lo ejecutamos y verificamos su funcionamiento.