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

  1. Introducción a los Servicios Web
  2. Protocolos y Formatos de Datos
  3. Consumiendo Servicios Web RESTful
  4. Consumiendo Servicios Web SOAP
  5. Autenticación y Seguridad
  6. Ejercicios Prácticos

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

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

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

  1. Importación de Módulos: Importamos los módulos necesarios (System.Net.HttpClient y System.JSON).
  2. Creación del Cliente HTTP: Creamos una instancia de THTTPClient.
  3. Realización de la Solicitud: Utilizamos el método Get para realizar una solicitud HTTP GET.
  4. Manejo de la Respuesta: Verificamos el código de estado de la respuesta y procesamos el contenido JSON.
  5. Liberación de Recursos: Liberamos los recursos utilizados.

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

  1. Importación de Módulos: Importamos los módulos necesarios (Soap.SOAPHTTPClient).
  2. Creación del Cliente SOAP: Creamos una instancia de THTTPRIO.
  3. Configuración del Cliente: Configuramos la URL del servicio WSDL.
  4. Invocación del Servicio: Invocamos el método del servicio y procesamos la respuesta.
  5. Liberación de Recursos: Liberamos los recursos utilizados.

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

HttpClient := THTTPClient.Create;
HttpClient.CustomHeaders['Authorization'] := 'Bearer ' + Token;

  1. Ejercicios Prácticos

Ejercicio 1: Consumiendo un API RESTful

  1. Objetivo: Consumir un API RESTful que devuelve una lista de posts y mostrar el título del primer post.
  2. 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

  1. Objetivo: Consumir un servicio SOAP que devuelve la capital de un país.
  2. 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

Módulo 2: Estructuras de Control y Procedimientos

Módulo 3: Trabajando con Datos

Módulo 4: Programación Orientada a Objetos

Módulo 5: Características Avanzadas de Delphi

Módulo 6: Desarrollo de GUI con VCL y FMX

Módulo 7: Desarrollo Web y Móvil

Módulo 8: Mejores Prácticas y Patrones de Diseño

Módulo 9: Proyecto Final

© Copyright 2024. Todos los derechos reservados