Tuesday, February 28, 2006

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:

At April 17, 2006 11:30 AM, Anonymous Anonymous said...

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

 
At April 18, 2006 5:36 AM, Blogger MedCampus said...

Me alegra que con este blog pueda servirle de ayuda a alguien, parece q la final si cumple su objetivo

 
At January 10, 2007 1:41 PM, Anonymous Anonymous said...

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.

 
At May 07, 2007 3:41 AM, Blogger Manu said...

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.

 
At May 08, 2007 6:06 PM, Blogger MedCampus said...

Muchas gracias por tu comentario. Vamos a ver si un dia de estos saco uno acerca de SOAP sobre PHP5.

 
At June 20, 2007 8:35 AM, Anonymous Anonymous said...

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

 
At August 12, 2007 3:50 PM, Anonymous Anonymous said...

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

 
At August 12, 2007 5:45 PM, Anonymous Anonymous said...

porfis saca uno sobre soap con php5

 
At August 13, 2007 9:35 AM, Blogger MedCampus said...

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.

 
At August 13, 2007 11:09 AM, Anonymous Anonymous said...

Muchas gracias , espero tu respuesta, me ha encantado tu block se aprende muchas cosas

 
At January 11, 2008 7:26 AM, Anonymous Anonymous said...

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

 
At January 24, 2008 7:42 AM, Anonymous Anonymous said...

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.

 
At August 29, 2008 10:31 AM, Anonymous Anonymous said...

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

 
At November 14, 2008 2:24 PM, Blogger Maria said...

Hola gracias por fin algo sencillo gracias

 
At December 19, 2008 8:47 AM, Blogger andres guillermo said...

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 ?

 
At January 01, 2009 9:48 AM, Blogger andres guillermo said...

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.

 
At May 26, 2009 1:52 PM, Anonymous isantos said...

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

 
At June 01, 2009 4:44 PM, Blogger MedCampus said...

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.

 
At June 01, 2009 5:11 PM, Anonymous isantos said...

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....

 
At February 24, 2010 1:22 PM, Blogger Yoa said...

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?

 
At May 28, 2010 10:45 AM, Blogger Verquiel said...

Explicado de forma excelente.
Se me dificultaba entenderlo en otros sitios. Le daré una prueba a ver cómo me funciona.

 
At September 29, 2010 6:50 PM, Anonymous Anonymous said...

excelente para comprender como funcionan, el primer ejemplo q encuentro y funciona!jeje

 
At November 12, 2010 12:54 PM, Anonymous Anonymous said...

Excelente... Me sirvio a la perfección..

 
At November 24, 2010 2:16 AM, Anonymous generic cialis said...

Hello, I do not agree with the previous commentator - not so simple

 
At March 19, 2011 12:09 PM, Blogger Unknown said...

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.

 
At September 25, 2015 11:24 AM, Blogger Unknown said...

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