Web Services. El uso de PHP con NuSOAP.
Los servicios Web (Web Services) y el XML están cada vez más de moda en el mundo de la programación.
¿Qué es un servicio web?Un servicio Web es una colección de protocolos y estándares que sirve para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, soportando así la interoperabilidad máquina – máquina (interoperabilidad sintáctica).
La interoperabilidad se consigue mediante la adopción de estandares abiertos.
Estándares empleados
- Web Services Protocol Stack: Así se denomina al conjunto de servicios y protocolos de los servicios Web.
- XML : Es el formato estándar para los datos que se vayan a intercambiar.
- SOAP o XML-RPC: Protocolos sobre los que se establece el intercambio.
- Otros protocolos: los datos en XML también pueden enviarse de una aplicación a otra mediante protocolos normales como HTTP, FTP, o SMTP.
- WSDL: Es el lenguaje de la interfaz pública para los servicios Web. Es una descripción basada en XML de cómo debe establecerse la comunicación de los servicios Web.
- UDDI : Protocolo para publicar la información de los servicios Web. Permite a las aplicaciones comprobar qué servicios web están disponibles.
- WS-Security: Protocolo de seguridad aceptado como estándar por OASIS. Garantiza la autenticación de los actores y la confidencialidad de los mensajes enviados.
Ahora, ¿qué es NuSOAP?
NuSOAP es un kit de herramientas (ToolKit) para desarrollar Web Services bajo el lenguaje PHP, desarrollada por la empresa NuSphere (http://www.nusphere.com/), licenciada bajo LGPL y disponible en sourceforge ( http://sourceforge.net/projects/nusoap/). Está compuesto por una serie de clases que nos harán mucho más fácil el desarrollo de Web Services. Provee soporte para el desarrollo de clientes (aquellos que consumen los Web Services) y de servidores (aquellos que los proveen). NuSOAP está basado en SOAP 1.1, WSDL 1.1 y HTTP 1.0/1.1
Veamos un ejemplo
Este es el ejemplo clásico para imprimir hola mundo.
Para construir un Servicio Web (server.php) basado en NuSOAP con PHP se debe crear de la siguiente forma:
<?php
//incluimos la clase nusoap.php
require_once('nusoap/nusoap.php');
//creamos el objeto de tipo soap_server
$server = new soap_server;
//registramos la función que vamos a implementar
$server->register('hello');
//implementamos la función
function hello ($name){
return "Hola $name.";
}
//llamamos al método service de la clase nusoap
$server->service($HTTP_RAW_POST_DATA);
?>
Ya con esto tenemos implementado un Web Service (server.php), ahora hagamos un cliente (cliente.php) para acceder a este Web Service.
Nota: En el código no se han incluido las comprobaciones de errores para poder facilitar la lectura de los pasos, para lo cual se debería usar el método $soapclient->getError().
<?php
//incluimos la clase nusoap.php
require_once('nusoap/nusoap.php');
//creamos el objeto de tipo soapclient.
//http://www.mydomain.com/server.php se refiere a la url
//donde se encuentra el servicio SOAP que vamos a utilizar.
$soapclient = new soapclient( 'http://www.mydomain.com/server.php');
//Llamamos la función que habíamos implementado en el Web Service
//e imprimimos lo que nos devuelve
echo $soapclient->call('hello',array( 'name'=>'Mundo'));
?>
Conclusiones
Los Servicios Web pueden ser muy útiles en ciertos casos concretos de programación. Los expertos de marketing de empresas de software como Microsoft anuncian a bombo y platillo una revolución debido a la aparición de SOAP, WSDL, UDDI, etc. Sin embargo, no conviene creerse todo lo que cuentan. Hay que tener en cuenta que les interesa que sus clientes actualicen sus herramientas de desarrollo a la versión .NET
La única revolución que podemos vivir en relación a los Servicios Web es la de ver como los servidores de Internet hablan entre ellos, y cada día son más independientes del programador. Y eso es algo que va a pasar completamente desapercibido para el resto de los usuarios de Internet.
Si logramos que existan Servicios Web de utilidad, gratuitos y sencillos, este nuevo esquema de comunicación y programación tendrá futuro. Si por contra, montamos campañas comerciales y vendemos fantasías en torno a palabras bonitas e incomprensibles como UDDI, WSDL, SOAP, XML, etc, habremos perdido nuestro valioso tiempo.
26 Comments:
Buen dato el de los Webservices con el Nusoap yo lo estoy usando aca en colombia para un desarrollo y andaba investigando un detalle que no me funciona... y encontre tu blog .. buen aporte...
elkin Cano
Cartagena - Colombia
m_ecano@hotmail.com
Me alegra que con este blog pueda servirle de ayuda a alguien, parece q la final si cumple su objetivo
Hola, estoy aprendiendo sobre este tema de webservices y me he iniciado con Nusoap. Debo consumir un web service en un registro UDDI. Recien me estoy introduciendo con UDDI. La pregunta es, UDDI da la URL al archivo wsdl para colocar en el código del cliente con Nusoap?
Desde ya. mil gracias por la ayuda.
En mi empresa estamos embaucandonos en este mundillo de los webservices, y la verdad, nusoap es un buen recurso, y muy util, pero en la version 5 de PHP sobre soap no hay apenas documentación, es nativo. Pero deberían plantearse moverlo algo mas por la red, en cuuanto a documentación. No olvidemos q aun es experimental, siempre nos quedará nusoap, y sobre todo este ejemplo y ayudita que gracias, me ha venido fenomenal.
Saludos al autor y al resto.
Muchas gracias por tu comentario. Vamos a ver si un dia de estos saco uno acerca de SOAP sobre PHP5.
Hola, bueno tu blog, ahora tengo un problema parecido y es que tengo un ws publicado en .NET 2.0 PERO lo están tratando de consumir con NUSOAP pero no estamos viendo reconocen los parámetros el SOAP que recive el ws de .NET.
sugerencias ?
fmoncayo@uteg.edu.ec
muchas gracias
Gracias por tu block!! tengo una pregunta este articulo para que version de php es? es que yo estoy haciendo un proyecto con php5 y me da error al llamar a nusoap me dice deprecated. muchas gracias
porfis saca uno sobre soap con php5
Bueno, este fue hecho y probado en PHP4, lo probare en el 5 a ver que tal y te comento que pueda ser tu error.
Muchas gracias , espero tu respuesta, me ha encantado tu block se aprende muchas cosas
Hola estoy haciendo un trabajo de clases, somos 5 equipos, 4 tiendas y un banco, a mi quipo le toco una tienda, y el profesor nos oriento que debemos estar conectadas todas al banco, el muchacho que le toco el banco hizo un webservice, nosotros usamos OScommerce para crear la tienda y ahora no sabemos como conectarnos al webservice para utilizar los servicios del banco.
Por favor necesito ayuda urgente.
saludos Zeydi
Mil gracias por el ejemplo, estoy en el trabajo y necesitaba un articulo de dos minutos de lectura para hacer funcionar unos codigos, me vino exelente!!, abarazo desde Uruguay.
Hola soy Luz, peruanita. jejej...yo hace poco logre hacer una aplicacion que consume un servico web utilizando AJAX...veran que es super mas practico que hacerlo usando php. Pero lo malo es q mi web service es chiquito el pobre y tengo la idea de crear uno que sea el puente entre este y mi aplicacion. Para no saturar al otro con las solicitudes. Si tienen alguna idea xfa un correito altuna993@hotmail.com
Hola gracias por fin algo sencillo gracias
hola, tengo un problema, tu web service no funciona con php5, puesto que este ya contiene soap y el codigo muestra error.
¿ Sera posible que puibliques un web service en php5 ?
Señores he desarrollado un web service sencillo que funciona en php4 y php5.
Lo mejor de todo esque se desarrolla de la misma forma que en php4.
comprobado.
Si estan interesados aqui esta mi correo andru_tong@hotmail.com.
que tal, apenas estoy comenzando con los webservices y con nusoap.. gracias por tu ejemplo que esta muy bien realizado... pero necesito regresar o conectarme a una bd a traves del webservice... alguien puede ayudarme con esto????
Te invito a que visites y comentes mi blog | ttp://www.ddsmedia.net/blog
Hola amigo, no sabría bien a que te refieres cuando comentas que quieres conectarte a un BD a través del WS. Los WS cuando se implementan se programa el servicio web, que es la clase servidora donde se programa la lógica del negocio y esta es la que se conecta a la BD, y luego el que desee consumir ese servicio tiene que programar una clase cliente, que es la que se conecta a la primera y obtiene lo que devuelve la misma para luego hacer algo con eso.
gracias por responder... he estado checando esto del nusoap, pero tengo problemas para regresar un arreglo, por ejemplo el ws me regresa los registros de una consulta por lo que debo regresar una matriz como si fuera la tabla que regresa la consulta....
Estoy utilizando nusoap pero registrando en estos momentos funciones sencillas, necesito algo mas, necesito registrar una clase entera y no encuentro el modo de hacer ¿me podrias ayudar al respecto?
Explicado de forma excelente.
Se me dificultaba entenderlo en otros sitios. Le daré una prueba a ver cómo me funciona.
excelente para comprender como funcionan, el primer ejemplo q encuentro y funciona!jeje
Excelente... Me sirvio a la perfección..
Hello, I do not agree with the previous commentator - not so simple
Buen dato amigo, estoy empezando con este tema y gracias a tu tema decidí programar mi servicio web con php ya que es software libre y tiene mucho futuro a comparación de microsoft que como dices, nomas quiere convencer de usar sus productos para vender y sacar mas dinero.
Yo tengo un blog de tutoriales de linux que yo hago y me envian si quieres podemos hacer contacto para poner enlazarnos o compartir tutoriales.
Muchas gracias, buen tuto y de mucha ayuda.
Arriba el software libre.
Hola Juenlis, no sé si me recuerdes de la Universidad de Holguín y luego de la UCi, es Alain, me alegra ver que te va bien, aquí va una duda, hay alguna forma de hacer uso de los métodos implementados en una clase aparte en el servidor usando nusoap?
Post a Comment
<< Home