Diferencia entre revisiones de «ManuelRomero/DAW/dwes/serviciosWebSoap»
De WikiEducator
(→Fichero del servicio web) |
|||
Línea 69: | Línea 69: | ||
... | ... | ||
</source> | </source> | ||
− | *Entre los tipos usaremos int para entero string para caracter string[] para un array o registro | + | *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 | + | *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 | *como indican en los apuntes escribimos el fichero genera.php | ||
<source lang=php> | <source lang=php> | ||
<?php | <?php | ||
− | //serverW.php es el fichero descrito | + | //serverW.php es el fichero descrito anteriormente, donde se implementan los métodos que se se ofrecen |
require_once 'serverW.php'; | require_once 'serverW.php'; | ||
require_once'WSDLDocument.php'; //script que generará el fichero xml | require_once'WSDLDocument.php'; //script que generará el fichero xml | ||
Línea 84: | Línea 84: | ||
echo $accion->saveXML(); //Genera el en navegador el fichero xml que hay que revisar | echo $accion->saveXML(); //Genera el en navegador el fichero xml que hay que revisar | ||
− | /* | + | /* LOS PARAMETROS DE WSDLDOCUMENT( ) |
− | El nombre de la clase que gestionará las peticiones al servicio. | + | 1º: El nombre de la clase que gestionará las peticiones al servicio. |
− | La URL en que se ofrece el servicio. | + | 2º: La URL en que se ofrece el servicio. |
− | El espacio de nombres destino. | + | 3º: El espacio de nombres destino. |
* */ | * */ | ||
Línea 93: | Línea 93: | ||
?> | ?> | ||
</source> | </source> | ||
+ | ====== | ||
+ | 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 | ||
+ | <source lang=php> | ||
+ | <?php | ||
+ | require_once('serverW.php'); | ||
+ | |||
+ | //En este caso especificmos el fichero de descripcion del servicio generado anteriormente con la herramienta '''''WSDLDocument''''' | ||
+ | $server = new SoapServer("http://localhost/Saop4/serviciow.wsdl.xml"); | ||
+ | |||
+ | $server->setClass('ServerW'); | ||
+ | $server->handle(); | ||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | *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 | ||
+ | sudo pear install wsdl2php-0.2.1-pear.tgz |
Revisión de 10:11 11 mar 2014
Obetener el fichero wsdl
- Tenemos una serie de métodos o funciones que queremos ofrecer a otras aplicacones web
Fichero del servicio web
- server.php
<?php require_once('DB.php'); require_once('producto.php'); class Server { /** * Obtiene el PVP de un producto a partir de su código * */ public function getPVP($codigo){ $producto = DB::obtieneProducto($codigo); return $producto->getPVP(); } /** * Devuelve un array con los códigos de todas las familias * */ public function getFamilias(){ $familias = DB::obtieneFamilias(); return $familias; } /** * Devuelve un array con los códigos de los productos de una familia * */ public function getProductosFamilia($familia){ $productos = DB::obtieneProductosFamilia($familia); return $productos; } /** * Devuelve el número de unidades que existen en una tienda de un producto * */ public function getStock($codigo, $tienda){ $unidades = DB::obtieneStock($codigo, $tienda); return $unidades; } } ?>
- Lo que queremos es ofrecer estos métodos para que otras aplicaciones las usen
- Pero a priori 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
- Primero debemos comentar los métodos con las directivas o marcas usados por lenguejes que generan documentación como javadoc o phpdocumetor
- Entre las más importantes usarmeos @param @return
- Nos quedará
/** * Obtiene el PVP de un producto a partir de su código * @param string $cod@igo * @return float * * */ public function getPVP($codigo){ $producto = DB::obtieneProducto($codigo); return $producto->getPVP(); ...
- 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
<?php //serverW.php es el fichero descrito anteriormente, donde se implementan los métodos que se se ofrecen require_once 'serverW.php'; require_once'WSDLDocument.php'; //script que generará el fichero xml //serviciow.php es el fichero que genera el objeto servidor soap $accion = new WSDLDocument("serverW","http://localhost/Saop4/serviciow.php", "http://localhost/Saop4"); echo $accion->saveXML(); //Genera el en navegador el fichero xml que hay que revisar /* LOS PARAMETROS DE WSDLDOCUMENT( ) 1º: El nombre de la clase que gestionará las peticiones al servicio. 2º: La URL en que se ofrece el servicio. 3º: El espacio de nombres destino. * */ ?>
==
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
<?php require_once('serverW.php'); //En este caso especificmos el fichero de descripcion del servicio generado anteriormente con la herramienta '''''WSDLDocument''''' $server = new SoapServer("http://localhost/Saop4/serviciow.wsdl.xml"); $server->setClass('ServerW'); $server->handle(); ?>
- 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
sudo pear install wsdl2php-0.2.1-pear.tgz