A petición de uno de mis lectores, he creado un pequeño cliente que consume un servicio web de terceros, en éste caso el mismo que usé para mi entrada anterior Probando Delphi for iOS pero en una aplicación de escritorio.
El proceso es muy simple.
– Creamos una nueva aplicación VCL.
– Importamos el WSDL del Servicio Web en éste caso de Banxico.
Éste importador nos genera una clase con la definición del Servicio Web lista para ser consumida, como lo podemos apreciar en la siguiente imagen.
– Agregamos los objetos que deseamos para que nuestra interfáz gráfica se vea un poco decente 🙂
– Agregamos el código necesario para consumir el método que obtiene el tipo de cambio de las diferentes monedas y ejecutamos nuestra aplicación.
Cabe mencionar que por el poco tiempo que dispongo no pude utilizar el XML Data Binding para crear las clases que representan el esquema del documento XML por lo que tuve que «trabajar» con algo más simple para serializar el XML que nos regresa el Servicio Web.
Enjoy!!!
Nota: Desarrollado con Delphi XE2
Ésta entrada y el código fuente son libres para su uso y publicación, lo único que te pido, si te parece justo, es mencionar la fuente de donde se obtuvo.
Eliseo, muchas gracias por su aporte, se ve tan sencillo frente a tanta complejidad que hay detrás de ese mecanismo. Me será muy útil.
PD: por si alguien sigue el ejemplo, la dirección completa del servicio es: http://www.banxico.org.mx:80/DgieWSWeb/DgieWS?WSDL
Que bien Gustavo. Que bueno que te sea útil, ya valió la pena ésta entrada.
La verdad es que Delphi te hace la vida fácil, el web Service tiene otros métodos, yo sólo usé el del tipo de cambio, intenta consumir los otros, te servirá de aprendizaje.
Saludos y gracias por el interés.
Tu aporte es muy bueno pero te pregunto no tendras al alcance un proyecto similar de web services pero que sea por ejemplo del tipo de clima y un codigo postal que me arroge segun el codigo postal ya sea en Delphi o C++ en la que pueda guiarme o entender las funcinalidades del web services o al menos que paramtros mandar a llamar ya teniendo el WSDL
Hay varios servicios web en el ciber-espacio, pero el que encontré más cercano a tu requerimiento es el siguiente
http://wsf.cdyne.com/WeatherWS/Weather.asmx
Lo malo es que solo funciona para ciudades de Estados Unidos.
Puedes seguir éste o cualquier otro tutorial para desarrollar un cliente que consuma el servicio web.
Saludos
Excelente artículo. Me parece que en estos días los sistemas van muy de la mano con el consumo de webservices, especialmente ahora con tanto servicio en la nube.
Un abrazo y gracias por la información.
Así es, aunque me parece que se tardaron mucho en aceptar éste tipo de procesos.
Ahora hay un auge de Servicios Web, pero hace mucho que están disponibles; ahora mismo recuerdo el tutorial que hice en el 2008 y que fué a raíz de la primer reunión Delphi en México.
Yo ya conocía desde antes estos servicios ya que desarrollé un cliente que consume un servicio web de un sistema de procesamiento de voz llamado Callegra, pero lo desarrollé con C#.
Saludos 🙂
Recuerdo esa reunión con nuestro amigo Jach. Muy interesante todo lo que vimos en aquella ocasión. Valdría la pena amigo mio organizar un taller presencial de creación de webservices con Delphi
Pues vamos organizando ya un programa de actividades, no solo de servicios web, sino de otras funcionalidades, hay que comentarlo en delphiaccess para concretar los puntos.
Va.
Se que ya tiene su tiempecito este blog pero a mi me ayudo hasta llegar a la parte del web service, pero aun no eh podido usar la clase que me permite usar xml.
Que debo hacer? Debo importar una libreria?
Eh estado buscando, al parecer es eso, pero si hay algo concreto que me puedan sugerir, bienvenido.
Saludos y gracias de ante mano.
Que tal Adolfo,
El componente XML Data Binding es el que te permite crear una clase con la definición de los archivos XML.
Dicho componente se encuentra en la carpeta XML de la Galería de plantillas del repositorio de objetos de RAD Studio/Delphi.
Gracias por leerme.
Saludos
Hola,
Excelente aporte!. Mi duda es, ¿el ejemplo que presentas para que version de Delphi es?
En mi caso, intente abrirlo con Delphi 5(no puedo usar otra version) y me marco ciertos conflictos en cuanto a librerias…¿crees que se pueda hacer correr para mi version de Delphi?
Ojalá y si ya que tu ejemplo me esta sirviendo de referencia para desarrollar un proyecto.
Saludos
Hola Janny
El código de ésta publicación está hecho con Delphi XE2, lamentablemente con Delphi5 no puedes ejecutar el código, sin embargo, sé de una página con la que puedes intentar resolver el problema.
Web Service y Delphi 5
Espero te ayude.
Saludos y gracias por leerme.
hola! te hago una consulta, quiero consumir un WebService y cuando Importo el WSDL del Servicio Web, me tira error como si el documento estuviera vacio (y no lo esta). Me pasa con todos los ejemplos que pruebo. Sabes que puede ser?
Muchas Gracias
Hola Gabriela.
Hay varias probabilidades, puede ser porque requieres de algún certificado para acceder al WebService, que la url no sea correcta, que en realidad no tenga nada.
Si me pudieras mostrar o enviar la url a través de la página de contacto con gusto te ayudaría con más precisión.
Saludos y gracias por leerme
Muy buen articulo, gracias.
muy buen el ejemplo, lo estoy modificando para comsumir otro tipo de webservice pero me arroja un error al momento de indicacarle el puerto a utilizar, en el ejemplo que das utilizas DgieWSPort como puerto, yo modifico ese valor segun lo que me indica el puerto del webservice pero me indica que no esta declarado, el webservice que deseo utilizar es http://www.sicm.gob.ve/sicm.php?wsdl, utilice como base tu ejemplo, solo importe la unidad y cambie uno que otro valor para utilizar la funcion holasicm pero sin exito alguno, si me pudieras colaborar con esto te estaria muy agradecido, saludos desde venezuela.
Hola Alexander,
He creado una pequeña aplicación y funciona sin problema como lo podrás observar en la siguiente imagen:
http://www.delphienmovimiento.mx/wp-content/uploads/2016/01/Test.png
Puedes descargar el código fuente desde éste enlace.
http://www.delphienmovimiento.mx/downloads/Codigo+Test+webService
Muchas Gracias eliseo, tenia mas de un año con este detalle, ahora tengo material para trabajar, solo me faltaba este enlace, de verdad muchisimas gracias, cualquier detalle te comento, una vez mas muchisimas gracias.
Espero lleves a buen puerto tu aplicación, me alegra saber que éste artículo ha servido de algo. En lo que te pueda seguir ayudando con mucho gusto.
También te recomiendo que todas tus dudas las hagas en la Comunidad DelphiAccess (http://delphiaccess.com/foros) podrás obtener ayuda de mas compañeros.
Saludos
Hola, soy nuevo en esto del webservi, tengo delphi 6 alguien sabe donde conseguir informacion, ya que tengo que hacer un trabajo y consumir un webservi.
gracias
HOla Me podrin ayudar a saber como se saco esta liga:
http://www.banxico.org.mx:80/DgieWSWeb/DgieWS?WSDL
de la pagina de http://www.banxico.org.mx
Saludos
Hola Juve,
No entiendo tu pregunta, pero esa url la encontré googleando.
Saludos
Hola.
Estoy haciendo una llamada a una url que necesita certificado digital. ¿Sabrías decirme cómo se hace para incluir el certificado en el proceso?
Gracias
Que tal Francisco
Si fuese posible compartenos la URL del Servicio Web y con gusto vemos que es y como pide el certificado.
Saludos
Claro.
https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInmediatoInfo.wsdl
Gracias y un saludo
Buen día Francisco,
Ya he importado el wsdl y no veo donde solicita el certificado, no se si lo pide cuando se envía algo real, porque he realizado un REQUEST y el WebService respondió con un mensaje de error como se ve en la siguiente imagen:
Si te pidiera el certificado de la página lo que se tiene que hacer es agregarlo en el almacen de «Entidades de Certificación Raiz de Confianza».
Si puedes comentarme un poco más acerca de lo que te está deteniendo para consumir el servicio con gusto lo vemos.
Saludos
Revisando veo que el servicio regresa dos certificados en la SSL info del RESPONSE.
Puedes agregarlos al almacen que te comento desde la Consola de Administración de Microsoft.
Puedes ver «éste artículo» para agregar certificados.
Saludos
Eliseo.
Gracias por tu interés. Echaré un vistazo al link que me indicas y te comento.
Saludos
Hola, estoy aquí de nuevo.
He seguido las instrucciones que me dabas, he añadido el complemento «certificados» en el mmc pero cuando salgo me dice de grabar y crea un fichero .msc que la verdad no sé qué hacer con él.
La llamada que hago en el programa delphi es la siguiente:
result := GetsiiSOAP.SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);
y me dice «Se requiere un certificado para completar la autenticación de cliente»
Gracias y un saludo
Hola Francisco, lamentablemente, no tengo los datos necesarios para poder realizar una prueba real, si te proporcionaron datos de prueba y puedes enviarmelos con gusto te podría ayudar de mejor forma.
Saludos
Hola de nuevo.
Lamentablemente no tengo datos de prueba. Lo único que tengo es un documento que distribuye la agencia tributaria y el pequeño programa de pruebas que estoy haciendo y que me da el error al hacer la llamada. Las dos cosas las tienes en este sitio ftp:
http://datos.newtron.es/Varios/
Gracias de nuevo y un saludo