Utilizar las diferentes clases HTTP y sus funciones

Completado

Puede acceder a los servicios REST a través de solicitudes HTTP. Para implementar una solicitud HTTP, debe usar un verbo HTTP.

Los siguientes verbos son los verbos más utilizados en los servicios REST:

  • GET (para leer datos)

  • POST (para crear datos)

  • PUT (para actualizar/reemplazar datos)

  • PATCH (para actualizar/modificar datos)

  • DELETE (para eliminar datos)

Clase HttpClient

La clase HttpClient proporciona una clase base para enviar solicitudes HTTP y recibir respuestas HTTP de un recurso identificado por un URI.

  • DefaultRequestHeaders(): obtiene los encabezados de solicitud predeterminados que se deben enviar con cada solicitud.

  • SetBaseAddress(Uri): establece la dirección base del URI que se utiliza al enviar solicitudes.

  • Get(Uri, HttpResponseMessage): envía una solicitud GET para obtener el recurso identificado por el URI de solicitud.

  • Post(Uri, HttpContent, HttpResponseMessage): envía una solicitud POST al URI especificado.

  • Put(Uri, HttpContent, HttpResponseMessage): envía una solicitud PUT al URI especificado.

  • Delete(Uri, HttpContent, HttpResponseMessage): envía una solicitud DELETE al URI especificado.

  • Send(HttpRequestMessage, HttpResponseMessage): envía una solicitud HTTP. En la variable HttpRequestMessage, debe proporcionar el URI y el verbo que se va a usar.

  • Clear(): establece la variable HttpClient en el valor predeterminado.

  • Timeout(): obtiene o establece la duración en segundos que se debe esperar antes de que la solicitud agote el tiempo de espera. El tiempo de espera es un valor entero.

  • AddCertificate(Certificate, Password): agrega un certificado a la clase HttpClient. Debe proporcionar un certificado codificado en base64.

Al proporcionar un URI, puede usar dos enfoques. El primer enfoque es solicitar datos de la URL siguiente:

https://jsonplaceholder.typicode.com/posts

Entonces, puedes usar SetBaseAddress cuando use la clase HttpClient para realizar múltiples solicitudes.

var
    client: HttpClient;
    responseMessage: HttpResponseMessage;
begin 
    client.SetBaseAddress('https://jsonplaceholder.typicode.com/');
    client.Get('posts', responseMessage);
end;

El segundo enfoque es cuando solo solicita los datos una vez. En ese caso, puede poner el URI completo en la función Get.

var
    client: HttpClient;
    responseMessage: HttpResponseMessage;
begin 
    client.Get('https://jsonplaceholder.typicode.com/posts', responseMessage);
end;

Clase HttpHeaders

La clase HttpHeaders contiene una colección de encabezados y sus valores. HttpHeaders se envían con cada solicitud y respuesta, y se utilizan para enviar información adicional sobre la solicitud o cómo el cliente desea que se formatee la respuesta.

Son HttpHeaders comunes Authorization (para enviar credenciales de autenticación), Content-Type (el tipo de medio del cuerpo de la solicitud), User-Agent (la cadena de agente de usuario, el nombre del navegador), Accept-Charset (qué conjuntos de caracteres son aceptables).

Puede obtener HttpHeaders mediante el uso de la propiedad DefaultRequestHeaders de la clase HttpClient.

var
    client: HttpClient;
    headers: HttpHeaders;    
    content: HttpContent;
    responseMessage: HttpResponseMessage;
begin 
    headers := client.DefaultRequestHeaders();
    headers.Add('Content-Type','application-json');
    client.Post('https://jsonplaceholder.typicode.com/posts', content, 
                responseMessage);
end;
  • Add(Key, Value): establece el valor proporcionado para el nombre del encabezado proporcionado.

  • Clear(): establece la variable HttpHeaders en el valor predeterminado.

  • Contains(Key): comprueba si una variable HttpHeaders contiene una propiedad con la clave dada.

  • GetValues(Key, Array of Text): obtiene los valores para la clave especificada. Los valores se devuelven en la matriz de texto.

  • Remove(Key): elimina la clave y los valores relacionados del objeto HttpHeaders.

Clase HttpResponseMessage

La clase HttpResponseMessage representa un mensaje de respuesta HTTP. Un mensaje de respuesta es el resultado de una acción HTTP (Get, Post, Put, Delete). Se devuelve en el parámetro HttpResponseMessage.

var
    client: HttpClient;
    responseMessage: HttpResponseMessage;
begin 
    client.Get('https://jsonplaceholder.typicode.com/posts', responseMessage);
end;
  • Content(): obtiene el contenido (HttpContent) de la respuesta HTTP.

  • Headers(): obtiene los encabezados HTTP de la solicitud HTTP.

  • HttpStatusCode(): obtiene el código de estado de la respuesta HTTP.

  • IsSuccessStatusCode(): obtiene un valor que indica si la respuesta HTTP fue correcta.

  • ReasonPhrase(): obtiene la frase de razón que generalmente se envía junto con el código de estado. Puede usar esta variable para proporcionar al usuario información adicional cuando falla una solicitud.

Clase HttpContent

La clase HttpContent representa el cuerpo y los encabezados de contenido HTTP, y se usa como cuerpo para enviar información o como cuerpo de respuesta. Puede usar la propiedad Content en las clases HttpRequestMessage (con una solicitud) o HttpResponseMessage (con una respuesta).

  • Clear(): establece el objeto HttpContent en un valor predeterminado.

  • GetHeaders(HttpHeaders): obtiene los encabezados HTTP del contenido. El resultado se devuelve en el parámetro HttpHeaders.

  • ReadAs(Result): lee el contenido en el texto o flujo proporcionado. El resultado puede ser de tipo Text o InStream.

  • WriteFrom(Value): establece la variable HttpContent en el texto o flujo proporcionado.

Clase HttpRequestMessage

La clase HttpRequestMessage representa un mensaje de solicitud HTTP. Un mensaje de solicitud es la clase que se utiliza para enviar una solicitud.

[Ok := ] HttpClient.Send(HttpRequestMessage, HttpResponseMessage);
  • Content(): obtiene o establece el contenido de la solicitud HTTP.

  • GetRequestUri(): obtiene el URI que se usa para la solicitud HTTP.

  • Method(): obtiene o establece el tipo de método. Debe proporcionar un verbo HTTP que se use con esta solicitud.

  • SetRequestUri(RequestUri): establece el URI que se usa para la solicitud HTTP.

var
    client: HttpClient;
    requestMessage: HttpRequestMessage;
    responseMessage: HttpResponseMessage;
begin 
    requestMessage.Method('GET');
    requestMessage.SetRequestUri('https://jsonplaceholder.typicode.com/posts');
    client.Send(requestMessage, responseMessage);
end;