Domingo, 02 Marzo 2014 00:00

Crear un servicio web con PHP, usando nuSOAP

Escrito por 
Valora este artículo
(0 votos)

Vamos a crear un servicio web en PHP mediante SOAP y WSDL, usando la librería nuSOAP. Basicamente un servicio web nos permite estandarizar la comunicación entre un servidor que oferta una funcionalidad, y un cliente que la solicita, abstrayéndonos de los lenguajes y plataformas empleados, para ello nos apoyaremos en los siguientes estándares: SOAP que establece las reglas del intercambio, WSDL que describe la interfaz pública del servicio, y XML que estructura los datos que se intercambian.

Comenzaremos con la creación de una tabla de pruebas en el phpMyAdmin, mediante las siguientes sentencias SQL, y la dotaremos de contenido, para posteriormente servir la información solicitada en función de los datos recibidos. Nuestra tabla contendrá información sobre una serie de artículos: un identificador unívoco, un descriptivo del producto y un precio.

 

CREATE TABLE `articulos` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`txt` CHAR( 9 ) NOT NULL ,
`precio` DECIMAL(8,2) NOT NULL ,
PRIMARY KEY ( `id` )
);
INSERT INTO `articulos` VALUES (1, 'TV',    '375.00');
INSERT INTO `articulos` VALUES (2, 'DVD',   '43.00');
INSERT INTO `articulos` VALUES (3, 'PC',    '212.00');
INSERT INTO `articulos` VALUES (4, 'RADIO', '14.50');

Podemos consultar el contenido almacenado desde aquí: ARTÍCULOS.

 

Ahora empezaremos con la construcción del servicio, para ello hemos subido al servidor el fichero con la librería nuSOAP y lo hemos descomprimido en un directorio llamado lib. El siguiente paso consiste en la creación del servidor, para ello comenzamos incluyendo la librería, creando una instancia de la clase soap_server y configurando WSDL.

include('lib/nusoap.php');
$server = new soap_server();
$server->configureWSDL('Servidor', 'urn:Servidor');

 

Activamos el método, indicándole el nombre, los parametros de entrada y salida, la acción SOAP, el estilo, el uso y una descripción.

$server->register('MetodoConsulta',
    array('param_id' => 'xsd:string','param_txt' => 'xsd:string'),
    array('return' => 'xsd:string'),
    'urn:MetodoConsultawsdl',
    'urn:MetodoConsultawsdl#MetodoConsulta',
    'rpc',
    'encoded',
    'Retorna el datos'
);

 

Definimos el método que hemos activado con las sentencias anteriores, el cual consistirá en una consulta a la tabla creada, usando los parámetros de entrada id y txt para seleccionar toda la información relativa a ese artículo, y devolver una cadena de texto donde se indica el descriptivo del artículo seleccionado y su precio.

function MetodoConsulta($param_id,$param_txt) {

// Conectamos y seleccionamos la base de datos 
$link = mysql_connect(SQL_SERVER,SQL_USER,SQL_PASS) or die("Error: ".mysql_error()); 
$ddbb = mysql_select_db(SQL_DB) or die("Error: ".mysql_error());

// Realizar una consulta MySQL 
$query = "SELECT * FROM articulos WHERE id = '$param_id' AND txt = '$param_txt'"; 
$result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());

// Tratamos los datos seleccionados 
$row = mysql_fetch_array($result);

// Obtenemos los campos buscados 
$descripcion = $row['txt']; 
$precio = $row['precio'];

// Devolvemos el descriptivo y el precio consultado 
return "RESULTADO = ".strtoupper($descripcion)." ".strtoupper($precio)."€";

// Liberar resultados 
mysql_free_result($result);

// Cerrar la conexión 
mysql_close($link); 

}

 

Finalmente invocamos el servicio web.

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

 

Visto 356300 veces Modificado por última vez en Martes, 14 Octubre 2014 12:50