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 177983 veces Modificado por última vez en Martes, 14 Octubre 2014 12:50

7083 comentarios

  • Enlace al Comentario Kelcymmetty Sábado, 24 Junio 2017 07:51 publicado por Kelcymmetty

    Viagra Comment Ca Marche Generic Cialis Online Does Amoxil Cause Headaches Citotecwalgreens cialis Occasion Du Levitra Comprar Viagra Sin Receta En Barcelona Cialis Free Offer Stendra No Physician Approval Awc Canadian Phar Cialis Professional Generic Viagra Combo Amoxicillin And Newzeland White Rabbits Levitra 20mg Online Rx Online Propecia Es Igual Que Proscar best prices for on line levitra Dapoxetine For Sale In Australia Generic Propecia Bangalore levitra 20mg Propecia Wirkstoff Levitra 10 Mg Precio En Farmacia best site to buy levitra On Line Pharmacy Using Paypal Liquid Dramamine Propecia Generic Buy Propecia Dutasteride Get Isotretinoin Mastercard Accepted Discount Fedex Shipping Price Cialis Viagra Kaufen Nachnahme Cheap Safe Viagra generic viagra Online Propecia Male Pattern Hair Loss Dutasteride Baldness Propecia Uk Priligy Page D'Accueil Viagra For Sale Malaysia Tadalafil Canadian Pharmacy Cialis Buy Generic Plavix Online India Cheap Viagra 50mg Kamagra Sublingual Tretinoin Cream 0.1 Buy Levitra Best Price Cialis Lilly Brand Pills

  • Enlace al Comentario Kelcymmetty Sábado, 24 Junio 2017 07:16 publicado por Kelcymmetty

    Cephalexin Directions Side Effects Priligy Price Abilify Cost Per Month Novo Buy Viagra Online Usa Canadian Drugs No Prescription 5mg Buy Propecia Vardenafil 20mg Fish Antibiotics Amoxicillin Buy Amoxicilina 500 Mg From Mexico Levitra Brand Buy Kamagra Droga Otc Avodart Where To Buy Viagra Cod generic isotretinoin direct discount amex accepted Levitra Sans Ordonnance Purchase Viagra Cheap Canada Pharm Cheap Lasix Levitra In Usa Cialis Giornaliero Controindicazioni Cialis Vademecum Precio Female Cialis Levitra Cuanto Dura El Efecto Amoxicillin Online Low Cost Generic Viagra 100mg Precio Cialis De 5 Mg Cialis E Nitrati Best Generic Viagra Where Can You Buy Female Viagra Viagra Brand Vs Generic Levitra Best Prices Vpxlfromindia Testosterona Propecia Generico Depoxetine Celexa Canadian Pharmacy Prezzo Medio Kamagra Cialis 40mg Prix Du Viagra Generique En Valence Prix Du Cialis Maroc Cheap Cialis 20mg Levitra Bayer France Viagra 50mg Preis cialis Kamagra Oral Jelly 10 Sachets Lasix Online Uk Internet Order Viagra Site Fiable Achat Kamagra Priligy Paraguay Levitra 40mg Sale Bentyl Saturday Delivery No Script Needed Store Cash Delivery Jolessa And Amoxicillin buy cialis Finpecia For Sale Priligy Spray Where To Buy Viagra buy roche accutane online uk Levitra Grapefruitsaft Buy Cialis Online Levitra Cialis Comparison Wirkung Viagra Video filitra vardenafil tablets Cialis 10mg Indications Organic Viagra viagra Propecia Payment Levitra Purchase Uk Purchasing Levitra Buy Azithromycin Online Overnight Medicina Cialis Tadalafil Propecia Where To Buy Acquistare Kamagra In Belgio Viagra Free Belgium Cheap Viagra 100mg Difference Entre Cialis Et Generique Misoprostol Cytotec Fast Shipping Viagra Ear Drainage Amoxicillin Levothyroxine Without A Script Buy Kamagra Cheap Levitra Valencia Sildenafil Kaufen Deutschland viagra vs cialis vs levitra reviews How To Take Amoxicillin 1000 Mg Receta Cialis Espana How To Get Viagra Cialis In Italia Amertripaline On Salle Generic Viagra Buy Animal Amoxicillin Antibiotics Without Prescriptions Uk Viagra Discount Propecia Pas Cher Marseille Generic Tamoxifen 20mg Levitra Online Cheap Buy Propecia Canada 1 Mg Forum Ou Acheter Cialis Low Price Cialis Propecia Sin Efectos Secundarios Quiero Comprar Viagra Sin Receta Cheap Viagra Online Generic Stendra Website Pharmacy Comprar Cialis Internet How To Order Cialis Stendra (Avanafil) Tablets

  • Enlace al Comentario Kelcymmetty Sábado, 24 Junio 2017 07:11 publicado por Kelcymmetty

    Amoxicillin Prescription Drug Kamagra Forum Acheter Priligy Dapoxetine De L'Inde Kamagra Jelly 100 Mg Le Havre cialis Buy Predisone Priligy Rite Aid Generic Cialis Pricing Pharmacy Stores In Canada Illegal Cialis Levitra Free Trial Where Can I Get Atorvastatin Without A Cialis Vendita Viagra Cheap Viagra 100mg Dosage

  • Enlace al Comentario Benniepow Sábado, 24 Junio 2017 06:50 publicado por Benniepow

    generic viagra canada pharmacy for viagra cheap viagra canadian online drugstore

  • Enlace al Comentario Vdedwsrar Sábado, 24 Junio 2017 03:17 publicado por Vdedwsrar

    fast auto payday loans
    payday loan direct lender
    national debt relief
    [url=https://zxepersonalloansonlinesmall.com/]small business loans[/url] ’

  • Enlace al Comentario AlfredDub Sábado, 24 Junio 2017 02:55 publicado por AlfredDub

    wh0cd741895 celebrex cost colchicine augmentin learn more here tetracycline bupropion zithromax

  • Enlace al Comentario Vdedwsrar Sábado, 24 Junio 2017 02:23 publicado por Vdedwsrar

    online payday loans direct lenders
    small payday loans
    same day payday loans
    [url=https://zxepersonalloansonlinesmall.com/]free credit check[/url] ’

  • Enlace al Comentario Vdedwsrar Sábado, 24 Junio 2017 02:20 publicado por Vdedwsrar

    no fax payday loan today
    bad credit debt consolidation internet payday loan student
    payday cash loan
    [url=https://zxepersonalloansonlinesmall.com/]quick low interest payday loan[/url] ’

  • Enlace al Comentario Vdedwsrar Sábado, 24 Junio 2017 02:20 publicado por Vdedwsrar

    authorized payday loan
    personal loans bad credit
    loans personal loans
    [url=https://zxepersonalloansonlinesmall.com/]cash advance online[/url] ’

  • Enlace al Comentario marshalbus Sábado, 24 Junio 2017 01:23 publicado por marshalbus

    progressive ins phone number www farmers com car insurance no license direct auto insurance
    car insurance quote online

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.