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);