jueves, 28 de enero de 2010

Montando un servicio web con NuSOAP

En la entrada de hoy vamos a ver como montar un sencillo servicio web en un servidor web basado en PHP+MySQL.

En primer lugar necesitaremos un servidor con dichas características. Hay multitud de opciones de hosting, tanto gratuitas como de pago. Elegimos una gratuita, concretamente http://www.000webhost.com/ Llevo utilizando este servicio gratuito durante algún tiempo y la verdad es que no me ha dado nunca ningún problema.

El servicio web que vamos a montar utiliza una librería de PHP llamada nuSOAP. Puede ser descargada libremente desde http://sourceforge.net/projects/nusoap/

La estructura de ficheros que subiremos al servidor será la siguiente:

servicioweb.php
nusuaop/Todo el contenido de la librería descargada

Veamos finalmente el contenido del fichero servicioweb.php





configureWSDL('servicename', 'urn:servicename','','document');

//********************************************************************************
//Registramos la función
//********************************************************************************
myRegister($server,'saludar',
array(
'in' => array(
'nombre' => 'xsd:string'
),
'out' => array(
'resultado' => 'xsd:string'
)
));

if (!isset($HTTP_RAW_POST_DATA)) $HTTP_RAW_POST_DATA = implode("\r\n", file('php://input'));
$server->service($HTTP_RAW_POST_DATA);

function myRegister(&$server,$methodname,$params)
{
$server->register($methodname,$params["in"],$params["out"],
'urn:servicename', // namespace
$server->wsdl->endpoint.'#'.$methodname, // soapaction
'document', // style
'literal', // use
'N/A' // documentation
);
}

//********************************************************************************
// Definimos la función
//********************************************************************************
function saludar($nombre){
return "Hola ".$nombre;
}

die();
?>


El servicio recibe una cadena de texto (un nombre) y devuelve otra cadena de texto ("Hola " + nombre) Por último ya solo queda probarlo. La url donde ha quedado publicado el webservice sería algo así: www.midominio.com/servicioweb.php?wsdl

Existen aplicaciones para probar servicios web (clientes SOAP genéricos). Uno muy completo que suelo utilizar es soapUI. Otro también interesante y mucho más liviano es WebserviceStudio (este no lo he probado mucho).

1 comentario: