Crear un Servicio Web en PHP utilizando NuSoap
filed in PHP on Aug.30, 2008
Hola recien llego de mi trabajo y me anime a escribir acerca de este tema tan interesante y de moda; Para crear Servicios Web en PHP 5 usaremos las clases de NuSOAP:
1.- Para que funcione el ejemplo descárgate las clases de NuSOAP versión 0.7.3 puedes hacerlo desde la pagina http://sourceforge.net/projects/nusoap/.
2.- Después descomprimes ese archivo y lo copias a tu sitio web (para este ejemplo el sitio se llama miwebservice y los archivos de NuSOAP los puse en un directorio llamado lib-nusoap.
3.- Luego ejecutas en tu MySQL 5.0 el script de la Base de Datos db_productos.sql que lo puedes descargar desde esta pagina.
4.- Luego crea una pagina PHP (en este ejemplo la pagina se llama servicioweb.php) y codificas lo 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | <?php require_once('lib-nusoap/nusoap.php'); $server = new soap_server; $ns="http://192.168.1.5/aplicativo"; // espacio de nombres; Sitio donde estará alojado el web service $server->configurewsdl('MiWebService'); //nombre del web service $server->wsdl->schematargetnamespace=$ns; /************ REGISTRANDO EL ARRAY A DEVOLVER(array de productos) **************/ $server->wsdl->addComplexType( 'ArregloProductos', // Nombre 'complexType', // Tipo de Clase 'array', // Tipo de PHP '', // definición del tipo secuencia(all|sequence|choice) 'SOAP-ENC:Array', // Restricted Base array(), array( array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Productos[]') // Atributos ), 'tns:Productos' ); /************ REGISTRANDO LA ESTRUCTURA DE DATOS PRODUCTOS **************/ $server->wsdl->addComplexType('Productos', 'complexType', 'struct', 'all', '', array( 'ProductoID'=> array('name' => 'ProductoID','type' => 'xsd:int'), 'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'), 'Precio' => array('name' => 'Precio', 'type' => 'xsd:string') ) ); /*METODO DEL WEB SERVICE*/ function ListarProductos($estado){ if($estado!=''){ $db = new mysqli(); //mysqli exclusivo para usar procedimientos almacenados $db_result = $db->connect ("localhost", "root", "","db_productos"); $sql=sprintf("call usp_ListarProductos('%s');",$estado); //intentando filtrar el SQL Injection $result = $db->query($sql); if (mysqli_errno($db)) printf("mySQL error %s\n", $db->error); //si es que hubo error se muestra $db->close(); $i=0; if($result->num_rows>0){ while($row = mysqli_fetch_assoc($result)){ $toc[$i]['ProductoID'] = $row["producto_id"]; $toc[$i]['Nombre'] = $row["nombre"]; $toc[$i]['Precio'] = $row["precio"]; $i++; } $result->free; //liberando memoria return $toc; } } return ''; } /************ REGISTRANDO EL METODO **************/ $server->register( 'ListarProductos', // Nombre del Método array('estado' => 'xsd:string' ), // Parámetros de Entrada array('return' => 'tns:ArregloProductos') //Datos de Salida ); /******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/ $input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : implode("\r\n", file('php://input')); $server->service($input); exit; ?> |
Y al ejecutar en el navegador te debe mostrar algo así:

Si deseas puedes descargar el ejemplo completo desde aquí.
También te recomiendo que leas Consumir un Servicio Web en PHP utilizando NuSoap
Suerte Tigre !!
May 27th, 2009 on 3:41 pm
oye que barbaro….
excelente tu ejemplo…
justo lo que andaba buscando…
muchisimas gracias …
Te invito a que visites y comentes mi blog | http://www.ddsmedia.net/blog
June 7th, 2009 on 10:31 pm
Hola pues me gusto mucho lo que escribiste pero tengo una duda como publico una consulta, eh visto en algunos ejemplos que utilizan un archivo de servidor y otro de cliente.