En aquest tema, aprendrem com integrar serveis web en les nostres aplicacions Delphi. Els serveis web permeten que les aplicacions es comuniquin entre si a través d'Internet, utilitzant protocols estàndard com HTTP i formats de dades com JSON o XML. Aquesta capacitat és essencial per a la creació d'aplicacions modernes que necessiten interactuar amb altres sistemes o serveis en línia.

Conceptes Clau

  1. Serveis Web: Són aplicacions accessibles a través d'Internet que proporcionen funcionalitats específiques a altres aplicacions.
  2. Protocols: Els serveis web utilitzen protocols com HTTP/HTTPS per a la comunicació.
  3. Formats de Dades: Els formats més comuns per a l'intercanvi de dades són JSON i XML.
  4. RESTful Services: Un estil arquitectònic per a la creació de serveis web que utilitzen operacions HTTP estàndard.

Passos per Integrar Serveis Web

  1. Configuració del Projecte

Abans de començar, assegura't que tens un projecte Delphi configurat i que pots accedir a Internet des de la teva aplicació.

  1. Utilització de Biblioteques HTTP

Delphi proporciona diverses biblioteques per treballar amb HTTP, com TIdHTTP de la biblioteca Indy i THTTPClient de la unitat System.Net.HttpClient.

Exemple amb THTTPClient

uses
  System.SysUtils, System.Classes, System.Net.HttpClient, System.JSON;

procedure TForm1.Button1Click(Sender: TObject);
var
  HttpClient: THTTPClient;
  Response: IHTTPResponse;
  JsonResponse: TJSONObject;
begin
  HttpClient := THTTPClient.Create;
  try
    Response := HttpClient.Get('https://api.example.com/data');
    if Response.StatusCode = 200 then
    begin
      JsonResponse := TJSONObject.ParseJSONValue(Response.ContentAsString) as TJSONObject;
      try
        // Processar la resposta JSON
        ShowMessage(JsonResponse.GetValue('key').Value);
      finally
        JsonResponse.Free;
      end;
    end
    else
      ShowMessage('Error: ' + Response.StatusText);
  finally
    HttpClient.Free;
  end;
end;

  1. Tractament de Dades JSON

La majoria dels serveis web moderns utilitzen JSON per a l'intercanvi de dades. Delphi proporciona la unitat System.JSON per treballar amb JSON.

Exemple de Processament de JSON

uses
  System.JSON;

procedure ProcessJsonResponse(const JsonString: string);
var
  JsonObject: TJSONObject;
  JsonValue: TJSONValue;
begin
  JsonObject := TJSONObject.ParseJSONValue(JsonString) as TJSONObject;
  try
    JsonValue := JsonObject.GetValue('key');
    if Assigned(JsonValue) then
      ShowMessage(JsonValue.Value);
  finally
    JsonObject.Free;
  end;
end;

  1. Tractament de Dades XML

Encara que menys comú que JSON, alguns serveis web utilitzen XML. Delphi proporciona la unitat Xml.XMLDoc per treballar amb XML.

Exemple de Processament d'XML

uses
  Xml.XMLDoc, Xml.XMLIntf;

procedure ProcessXmlResponse(const XmlString: string);
var
  XmlDocument: IXMLDocument;
  RootNode: IXMLNode;
begin
  XmlDocument := LoadXMLData(XmlString);
  RootNode := XmlDocument.DocumentElement;
  ShowMessage(RootNode.ChildNodes['key'].Text);
end;

  1. Gestió d'Errors

És important gestionar els errors que poden ocórrer durant la comunicació amb els serveis web, com ara problemes de connexió o respostes invàlides.

Exemple de Gestió d'Errors

uses
  System.SysUtils, System.Net.HttpClient;

procedure TForm1.Button1Click(Sender: TObject);
var
  HttpClient: THTTPClient;
  Response: IHTTPResponse;
begin
  HttpClient := THTTPClient.Create;
  try
    try
      Response := HttpClient.Get('https://api.example.com/data');
      if Response.StatusCode = 200 then
        ShowMessage('Success: ' + Response.ContentAsString)
      else
        ShowMessage('Error: ' + Response.StatusText);
    except
      on E: ENetHTTPClientException do
        ShowMessage('HTTP Error: ' + E.Message);
      on E: Exception do
        ShowMessage('General Error: ' + E.Message);
    end;
  finally
    HttpClient.Free;
  end;
end;

Exercicis Pràctics

Exercici 1: Consumir un Servei Web RESTful

  1. Crea una aplicació Delphi que consumeixi un servei web RESTful públic (per exemple, un servei que proporcioni informació meteorològica).
  2. Mostra la informació obtinguda en un formulari Delphi.

Solució

procedure TForm1.Button1Click(Sender: TObject);
var
  HttpClient: THTTPClient;
  Response: IHTTPResponse;
  JsonResponse: TJSONObject;
begin
  HttpClient := THTTPClient.Create;
  try
    Response := HttpClient.Get('https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=London');
    if Response.StatusCode = 200 then
    begin
      JsonResponse := TJSONObject.ParseJSONValue(Response.ContentAsString) as TJSONObject;
      try
        ShowMessage('Temperature: ' + JsonResponse.GetValue('current').GetValue('temp_c').Value + '°C');
      finally
        JsonResponse.Free;
      end;
    end
    else
      ShowMessage('Error: ' + Response.StatusText);
  finally
    HttpClient.Free;
  end;
end;

Exercici 2: Enviar Dades a un Servei Web

  1. Crea una aplicació Delphi que enviï dades a un servei web RESTful (per exemple, un servei que accepti dades de registre d'usuari).
  2. Mostra la resposta del servei web en un formulari Delphi.

Solució

procedure TForm1.Button1Click(Sender: TObject);
var
  HttpClient: THTTPClient;
  Response: IHTTPResponse;
  JsonToSend: TJSONObject;
begin
  HttpClient := THTTPClient.Create;
  JsonToSend := TJSONObject.Create;
  try
    JsonToSend.AddPair('username', 'testuser');
    JsonToSend.AddPair('password', 'testpassword');
    Response := HttpClient.Post('https://api.example.com/register', TStringStream.Create(JsonToSend.ToString), nil, [TNameValuePair.Create('Content-Type', 'application/json')]);
    if Response.StatusCode = 200 then
      ShowMessage('Success: ' + Response.ContentAsString)
    else
      ShowMessage('Error: ' + Response.StatusText);
  finally
    JsonToSend.Free;
    HttpClient.Free;
  end;
end;

Conclusió

Integrar serveis web en les aplicacions Delphi és una habilitat essencial per a qualsevol desenvolupador modern. Hem après a utilitzar biblioteques HTTP, a processar dades JSON i XML, i a gestionar errors. Amb aquests coneixements, estàs preparat per crear aplicacions que es comuniquin eficaçment amb altres serveis a través d'Internet.

Curs de Programació Delphi/Object Pascal

Mòdul 1: Introducció a Delphi/Object Pascal

Mòdul 2: Estructures de Control i Procediments

Mòdul 3: Treballant amb Dades

Mòdul 4: Programació Orientada a Objectes

Mòdul 5: Funcions Avançades de Delphi

Mòdul 6: Desenvolupament d'Interfícies Gràfiques amb VCL i FMX

Mòdul 7: Desenvolupament Web i Mòbil

Mòdul 8: Millors Pràctiques i Patrons de Disseny

Mòdul 9: Projecte Final

© Copyright 2024. Tots els drets reservats