Consumir un Servicio Web de terceros

MVP_Logo_200x200

 

 

 

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.

WSDL Importer

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

WSDL unit

– Agregamos los objetos que deseamos para que nuestra interfáz gráfica se vea un poco decente 🙂

VCL Form

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

Ejecutable

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

Descargas


Si lo deseas puedes descargar el código fuente de ésta entrada, espero sea de utilidad.

[download id=”8″]
[download id=”9″]

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.

31 pensamientos sobre “Consumir un Servicio Web de terceros”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    SoapUI

    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

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

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

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *