En este tema, aprenderemos cómo integrar aplicaciones Delphi con servicios web. Los servicios web permiten a las aplicaciones comunicarse y compartir datos a través de la red, utilizando protocolos estándar como HTTP y formatos de datos como JSON y XML. Esta capacidad es esencial para desarrollar aplicaciones modernas que interactúan con otros sistemas y servicios en la nube.
Contenidos
- Introducción a los Servicios Web
- Protocolos y Formatos de Datos
- Consumiendo Servicios Web RESTful
- Consumiendo Servicios Web SOAP
- Autenticación y Seguridad
- Ejercicios Prácticos
- Introducción a los Servicios Web
Los servicios web son interfaces que permiten la comunicación entre diferentes aplicaciones a través de la web. Existen dos tipos principales de servicios web:
- RESTful (Representational State Transfer): Utiliza HTTP y es más ligero y fácil de usar.
- SOAP (Simple Object Access Protocol): Utiliza XML y es más robusto y estandarizado.
- Protocolos y Formatos de Datos
Protocolos
- HTTP/HTTPS: Protocolo de transferencia de hipertexto, utilizado para la comunicación en la web.
- SOAP: Protocolo basado en XML para intercambiar información estructurada.
Formatos de Datos
- JSON (JavaScript Object Notation): Formato ligero de intercambio de datos, fácil de leer y escribir.
- XML (eXtensible Markup Language): Formato de datos más complejo y robusto, utilizado en SOAP.
- Consumiendo Servicios Web RESTful
Para consumir un servicio web RESTful en Delphi, utilizaremos la clase THTTPClient
del módulo System.Net.HttpClient
.
Ejemplo Práctico: Consumiendo un API RESTful
Supongamos que queremos consumir un API que devuelve información sobre usuarios en formato JSON.
uses System.SysUtils, System.Classes, System.Net.HttpClient, System.JSON; procedure TForm1.Button1Click(Sender: TObject); var HttpClient: THTTPClient; Response: IHTTPResponse; JSONValue: TJSONValue; begin HttpClient := THTTPClient.Create; try Response := HttpClient.Get('https://jsonplaceholder.typicode.com/users/1'); if Response.StatusCode = 200 then begin JSONValue := TJSONObject.ParseJSONValue(Response.ContentAsString); try ShowMessage(JSONValue.GetValue<string>('name')); finally JSONValue.Free; end; end else ShowMessage('Error: ' + Response.StatusText); finally HttpClient.Free; end; end;
Explicación del Código
- Importación de Módulos: Importamos los módulos necesarios (
System.Net.HttpClient
ySystem.JSON
). - Creación del Cliente HTTP: Creamos una instancia de
THTTPClient
. - Realización de la Solicitud: Utilizamos el método
Get
para realizar una solicitud HTTP GET. - Manejo de la Respuesta: Verificamos el código de estado de la respuesta y procesamos el contenido JSON.
- Liberación de Recursos: Liberamos los recursos utilizados.
- Consumiendo Servicios Web SOAP
Para consumir un servicio web SOAP en Delphi, utilizaremos el componente THTTPRIO
del módulo Soap.SOAPHTTPClient
.
Ejemplo Práctico: Consumiendo un Servicio SOAP
Supongamos que queremos consumir un servicio SOAP que devuelve la temperatura actual de una ciudad.
uses Soap.SOAPHTTPClient, Soap.InvokeRegistry, Soap.Rio, Soap.SOAPHTTPTrans; procedure TForm1.Button2Click(Sender: TObject); var HTTPRIO: THTTPRIO; Service: IWeatherService; Temperature: Double; begin HTTPRIO := THTTPRIO.Create(nil); try HTTPRIO.URL := 'http://www.webservicex.net/globalweather.asmx?WSDL'; Service := HTTPRIO as IWeatherService; Temperature := Service.GetTemperature('New York'); ShowMessage('Temperature in New York: ' + FloatToStr(Temperature)); finally HTTPRIO.Free; end; end;
Explicación del Código
- Importación de Módulos: Importamos los módulos necesarios (
Soap.SOAPHTTPClient
). - Creación del Cliente SOAP: Creamos una instancia de
THTTPRIO
. - Configuración del Cliente: Configuramos la URL del servicio WSDL.
- Invocación del Servicio: Invocamos el método del servicio y procesamos la respuesta.
- Liberación de Recursos: Liberamos los recursos utilizados.
- Autenticación y Seguridad
Autenticación Básica
Para servicios que requieren autenticación básica, podemos agregar las credenciales en el encabezado de la solicitud.
HttpClient := THTTPClient.Create; HttpClient.UserName := 'username'; HttpClient.Password := 'password';
Autenticación con Token
Para servicios que utilizan tokens de autenticación, agregamos el token en el encabezado de la solicitud.
- Ejercicios Prácticos
Ejercicio 1: Consumiendo un API RESTful
- Objetivo: Consumir un API RESTful que devuelve una lista de posts y mostrar el título del primer post.
- API:
https://jsonplaceholder.typicode.com/posts
Solución:
procedure TForm1.Button3Click(Sender: TObject); var HttpClient: THTTPClient; Response: IHTTPResponse; JSONArray: TJSONArray; begin HttpClient := THTTPClient.Create; try Response := HttpClient.Get('https://jsonplaceholder.typicode.com/posts'); if Response.StatusCode = 200 then begin JSONArray := TJSONObject.ParseJSONValue(Response.ContentAsString) as TJSONArray; try ShowMessage(JSONArray.Items[0].GetValue<string>('title')); finally JSONArray.Free; end; end else ShowMessage('Error: ' + Response.StatusText); finally HttpClient.Free; end; end;
Ejercicio 2: Consumiendo un Servicio SOAP
- Objetivo: Consumir un servicio SOAP que devuelve la capital de un país.
- Servicio:
http://www.webservicex.net/country.asmx?WSDL
Solución:
procedure TForm1.Button4Click(Sender: TObject); var HTTPRIO: THTTPRIO; Service: ICountryService; Capital: string; begin HTTPRIO := THTTPRIO.Create(nil); try HTTPRIO.URL := 'http://www.webservicex.net/country.asmx?WSDL'; Service := HTTPRIO as ICountryService; Capital := Service.GetCapital('France'); ShowMessage('Capital of France: ' + Capital); finally HTTPRIO.Free; end; end;
Conclusión
En esta sección, hemos aprendido cómo integrar aplicaciones Delphi con servicios web, tanto RESTful como SOAP. Hemos cubierto los conceptos básicos, los protocolos y formatos de datos, y hemos visto ejemplos prácticos de cómo consumir estos servicios. Además, hemos abordado aspectos de autenticación y seguridad. Con estos conocimientos, estarás preparado para desarrollar aplicaciones que interactúan con servicios web, ampliando así las capacidades y funcionalidades de tus proyectos.
En el próximo tema, exploraremos el desarrollo móvil con Delphi, donde aprenderemos a crear aplicaciones móviles y a desplegarlas en diferentes plataformas.
Curso de Programación en Delphi/Object Pascal
Módulo 1: Introducción a Delphi/Object Pascal
- Introducción a Delphi y Object Pascal
- Configuración del Entorno de Desarrollo
- Primera Aplicación en Delphi
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Estructuras de Control y Procedimientos
- Sentencias Condicionales
- Bucles e Iteración
- Procedimientos y Funciones
- Ámbito y Ciclo de Vida de las Variables
- Manejo de Errores y Depuración
Módulo 3: Trabajando con Datos
- Arreglos y Cadenas
- Registros y Conjuntos
- Tipos Enumerados y Subrangos
- Manejo de Archivos
- Acceso a Bases de Datos
Módulo 4: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Herencia y Polimorfismo
- Interfaces y Clases Abstractas
- Manejo de Excepciones en POO
Módulo 5: Características Avanzadas de Delphi
- Genéricos y Colecciones
- Multihilo y Programación Paralela
- Desarrollo Basado en Componentes
- Biblioteca de Tiempo de Ejecución de Delphi (RTL)
- Técnicas Avanzadas de Depuración
Módulo 6: Desarrollo de GUI con VCL y FMX
- Introducción a VCL
- Creación de Formularios y Controles
- Programación Orientada a Eventos
- Introducción a FireMonkey (FMX)
- Desarrollo Multiplataforma con FMX
Módulo 7: Desarrollo Web y Móvil
- Desarrollo Web con Delphi
- Servicios RESTful
- Desarrollo Móvil con Delphi
- Despliegue de Aplicaciones Móviles
- Integración con Servicios Web
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Organización del Código y Documentación
- Patrones de Diseño en Delphi
- Técnicas de Refactorización
- Pruebas Unitarias y Desarrollo Basado en Pruebas
- Optimización del Rendimiento