En esta ocasión veremos como crear un web service utilizando una librería en PHP llamada nuSOAP y cual quier editor de texto plano que tengamos a nuestro alcance. Así que empecemos.
Primero descargamos la librería y la descomprimimos en la carpeta de nuestro proyecto y creamos un archivo llamado index.php en el cual escribiremos nuestro código PHP.
El código de nuestro web service de ejemplo es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php // incluimos la libreria ó toolkit nusoap que descargamos previamente require_once('lib/nusoap.php'); // Se crea el servidor $server = new nusoap_server(); // Se configura $server->configureWSDL('Web Service de Ejemplo', 'urn:WebServiceEjemplo'); // Se registra la función Saludar $server->register('Saludar', // nombre del metodo o funcion array('nombre' => 'xsd:string'), // parametros de entrada array('return' => 'xsd:string'), // parametros de salida 'urn:WebServiceEjemplo', // namespace 'urn:WebServiceEjemplo#Saludo', // soapaction 'rpc', // style 'encoded', // use 'La siguiente funcion recibe un nombre y saluda' // documentation ); // Función que saluda function Saludar($nombre) { return "Hola " . $nombre . "!"; } // Se invoca el servicio $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $server->service($HTTP_RAW_POST_DATA); |
Explicación
- Primero incluimos nuSOAP a nuestro script
- Creamos el servidor SOAP
- Después lo configuramos indicando el nombre del Web Service y el namespace al que pertenece
- Registramos la función Saludar() para que aparezca en nuestro Web Service, es importante recordar que tanto PHP como XML son sensibles a mayúsculas, así que respetemos este criterio tanto en el nombre de las funciones como en los parámetros de ellas.
- Indicamos los parámetros de entrada de la función Saludar que en este caso es un string cuyo nombre será $nombre
- Indicamos lo que devolverá la función Saludar, que en este caso es un string
- Indicamos el namespace al que pertenece la función Saludar (el mismo al que pertenece el Web Service)
- Indicamos el soapAction, que seria la acción SOAP, noten el formato:
<namespace>#<funcion> en realidad pudiera ser cualquier cosa en lugar del nombre de la función, pero recomiendo poner el nombre de la función. - Los dos siguientes parámetros ‘rpc’ y ‘encoded’ los de momento no nos interesan asi que los dejamos así.
- Escribimos una pequeña descripción de la función Saludar, esto se mostrará en el Web Service
Tipos de Dato
Como se puede observar para indicar un string se antepone el prefijo xsd, eso es para indicar que este tipo de dato es un tipo base, existen varios tipos de datos base y podemos encontrar más información sobre ellos en la w3Schools:
Arrays con nuSOAP
Además de estos tipos también existen los arrays, que al igual que en cualquier lenguaje de programación pueden ser tanto parámetros de entrada como salida de la función; la forma de expresarlo seria la siguiente:
1 2 3 4 5 6 7 8 9 10 |
// Funcion Que Devuelve un Array $server->register('FuncionDevuelveArray', // nombre del metodo o funcion array('nombre' => 'xsd:string'), // parametros de entrada array('return' => 'xsd:Array'), // parametros de salida 'urn:WebServiceEjemplo', // namespace 'urn:WebServiceEjemplo#FuncionDevuelveArray', // soapaction 'rpc', // style 'encoded', // use 'Funcion que devuelve un Array' // documentation ); |
NOTA: Observen que la primera letra ‘A’ es mayúscula, debemos cuidar esto, ya que de lo contrario tendremos problemas, ya que como mencioné XML y PHP son sensibles a mayúsculas y lo correcto es Array y no array