Apache HttpClient para Java: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Apache HttpClient y para qué sirve?

\n\n

Apache HttpClient es una potente y flexible biblioteca en lenguaje Java, diseñada para realizar solicitudes HTTP. Proporciona a los desarrolladores un control total sobre el proceso de envío y recepción de datos a través del protocolo HTTP. A diferencia de la clase integrada java.net.HttpURLConnection, Apache HttpClient ofrece una API de más alto nivel, soporte para estándares modernos (HTTP/1.1, HTTP/2), manejo conveniente de cookies, autenticación, pool de conexiones e interceptores de solicitudes.

\n\n

La biblioteca es indispensable en los siguientes escenarios:

\n
    \n
  • Interacción con APIs REST — envío de solicitudes GET, POST, PUT, DELETE a servicios web.
  • \n
  • Parseo de páginas web — descarga de contenido HTML para su posterior análisis.
  • \n
  • Pruebas de aplicaciones web — simulación de solicitudes de cliente.
  • \n
  • Arquitectura de microservicios — intercambio de datos entre servicios.
  • \n
  • Descarga de archivos — carga de datos binarios (imágenes, archivos comprimidos).
  • \n
\n\n

Instalación de Apache HttpClient

\n\n

Apache HttpClient no se instala a través de pip o npm, ya que es una biblioteca para Java. Para incluirla se utiliza un sistema de gestión de dependencias como Maven o Gradle. A continuación se presentan las instrucciones para ambas opciones.

\n\n

Instalación mediante Maven (pom.xml)

\n

Agregue las siguientes dependencias a su archivo pom.xml:

\n
<dependency>\n    <groupId>org.apache.httpcomponents</groupId>\n    <artifactId>httpclient</artifactId>\n    <version>4.5.14</version>\n</dependency>\n\n<dependency>\n    <groupId>org.apache.httpcomponents</groupId>\n    <artifactId>httpmime</artifactId>\n    <version>4.5.14</version>\n</dependency>
\n\n

Instalación mediante Gradle (build.gradle)

\n

Agregue en la sección dependencies:

\n
implementation 'org.apache.httpcomponents:httpclient:4.5.14'\nimplementation 'org.apache.httpcomponents:httpmime:4.5.14'
\n\n

Para trabajar con HTTP/2 (versión 5.x) utilice:

\n
implementation 'org.apache.httpcomponents.client5:httpclient5:5.3.1'
\n\n

Inicio rápido: primera solicitud HTTP

\n\n

Cree una clase Java simple y realice una solicitud GET a una API pública:

\n\n
import org.apache.http.client.methods.CloseableHttpResponse;\nimport org.apache.http.client.methods.HttpGet;\nimport org.apache.http.impl.client.CloseableHttpClient;\nimport org.apache.http.impl.client.HttpClients;\nimport org.apache.http.util.EntityUtils;\n\npublic class QuickStart {\n    public static void main(String[] args) {\n        // 1. Creamos el cliente HTTP\n        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {\n            \n            // 2. Creamos la solicitud GET\n            HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/posts/1");\n            \n            // 3. Ejecutamos la solicitud y obtenemos la respuesta\n            try (CloseableHttpResponse response = httpClient.execute(request)) {\n                \n                // 4. Extraemos el cuerpo de la respuesta\n                String body = EntityUtils.toString(response.getEntity());\n                \n                // 5. Mostramos el resultado\n                System.out.println("Código de estado: " + response.getStatusLine().getStatusCode());\n                System.out.println("Cuerpo de la respuesta: " + body);\n            }\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n}
\n\n

Métodos y funciones principales de Apache HttpClient

\n\n

1. HttpGet — ejecución de una solicitud GET

\n

Descripción: Crea una solicitud HTTP GET para obtener datos del servidor.

\n

Parámetros:

\n
    \n
  • String uri — URL de la solicitud.
  • \n
\n

<

Recommendations