Como hacer web services con Zend
Zend es un Framework para el desarrollo
en PHP, lo que permite el desarrollo de la estructura permítiendo
el desarrollo de aplicaciones Modelo-Vista-Controlador. De una forma
eficiente.
Lo primero que se debe hacer es
instalar Zend Framework, se puede descargar de:
http://www.zend.com/en/products/server/downloads
hay varios blogs que muestran como hacer este proceso, algunos usan
xampp o zend server. Los links los dejo al final.
Luego de tener instalado y probado el
zend, pasamos a la creación de un web service y un consumidor. Para
esto primero debemos entender un poco de que se trata esto. Los web
services permiten de forma estandar la integración de aplicaciones
web mediante el uso de SOAP, XML, WSDL, UDDI entre otros. Esto
permite la interacción de diferentes tecnologias sin necesidad de
que sean iguales. Los WSDL son usados como descripciones de los
servicios de los servicios web, SOAP se ocupa de la transferencia de
los datos y XML es usado para la descripcion de los datos.
Para este ejemplo no es necesario hacer
toda la estructura MVC, solo tener la librerias necesarias.
Empecemos:
Vamos a utilizar el componente
Zend_Soap que permite la creación de los web services.
Nuestro ejemplo se divide en tres
partes:
myws.php → Tiene la implementación
de los métodos
ws.php → genera el wsdl
client.php → invoca el wsdl y llama
a los métodos con parámetros válidos
Lo primero es crear en nuestro
directorio htdocs una carpeta llamada testSOAP la cual contendrá
nuestros tres archivos anteriores y nuestra carpeta Zend con las
librerias.
Lo primero es crear los métodos del
web services: myws.php
1
<?php
2
3 /**
4 * Web service methods
5 */
6 class myws
7 {
8 /**
9 * Get the add of two numbers
10 *
11 * @param int $one The first number
12 * @param int $two The second number
13 * @return int
14 */
15 public function sumita($one, $two)
16 {
17 $add = $one+$two;
18 return $add;
19 }
20
21 /**
22 * Get the add of two numbers
23 *
24 * @param int $one The first number
25 * @param int $two The second number
26 * @return string
27 */
28 public function restica($one, $two)
29 {
30 $minus = $one-$two;
31 return sprintf('%d - %d = %d',$one,$two,$minus);
32 }
33
34 /**
35 * Get the add of all the numbers of array
36 *
37 * @param array $numbers Array with numbers
38 * @return int
39 */
40 public function vectoAdd($numbers)
41 {
42 foreach($numbers as $actual)
43 {
44 $val = $val+$actual;
45 }
46 return $val;
47 }
48 }
49 ?>
1
<?php
2 require_once('myws.php');
3
4 if ($_SERVER['QUERY_STRING'] == 'wsdl')
5 {
6 require_once('/../Zend/Soap/AutoDiscover.php');
7
8 $auto = new Zend_Soap_AutoDiscover();
9 $auto->setClass('myws');
10 $auto->handle();
11 }
12 else
13 {
14 require_once('Zend/Soap/Server.php');
15
16 $wsdl = sprintf(
17 'http://%s%s?wsdl',
18 $_SERVER['HTTP_HOST'],
19 $_SERVER['SCRIPT_NAME']
20 );
21
22 $soapServer = new Zend_Soap_Server($wsdl);
23 $soapServer->setClass('myws');
24 $soapServer->handle();
25 }
26 ?>
Ahora por último creamos el cliente al
que llamaremos en el navegador: localhost/testWS/client.php
1 <?php
2 require_once('Zend/Soap/Client.php');
3
4 $url = 'http://localhost/testSOAP/ws.php?wsdl';
5
6 $client = new Zend_Soap_Client($url);
7
8 echo $client->sumita(3,27);
9 echo "<br />\n";
10 echo $client->restica(10,3);
11 echo "<br />\n";
12 $vect = array(3,2,5,1,5);
13 echo $client->vectoAdd($vect);
14 ?>
Para comprobar que todo funcione de
manera correcta, primeros lanzamos:
http://localhost/testSOAP/ws.php?wsdl
el cual en el navagador nos debe mostrar el wsdl que tiene la
descripción de los servicios del web services.
-->
Asi pues vemos como construir un web
services y su consumidor.
Links:
Comentarios