Cliente HTTP para Java: as principais bibliotecas para trabalhar com HTTP

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
Here is the translated HTML content in Portuguese (Português), with all HTML tags preserved and only the text content inside tags translated. ```html

Cliente HTTP para Java: principais bibliotecas para trabalhar com HTTP



O desenvolvimento moderno em Java raramente ocorre sem interação com servidores remotos via protocolo HTTP. Seja para chamar uma API REST, fazer upload de arquivos ou integrar com microsserviços — o desenvolvedor precisa de um cliente HTTP confiável e prático. Neste artigo, veremos três bibliotecas líderes para Java: OkHttp, Apache HttpClient e o cliente Java HttpClient integrado (a partir do Java 11). Você conhecerá suas características, verá exemplos de código e entenderá qual biblioteca escolher para seu projeto.



1. Java HttpClient (integrado, Java 11+)



A partir do Java 11, a biblioteca padrão passou a incluir um cliente HTTP moderno, que substituiu o obsoleto HttpURLConnection. Ele suporta HTTP/2, WebSocket, requisições assíncronas e fluxos reativos.



Características:

  • Não requer dependências adicionais — já vem no JDK.
  • Suporte a chamadas síncronas (send) e assíncronas (sendAsync).
  • Trabalha com HTTP/2 e faz downgrade automático para HTTP/1.1.
  • Suporte nativo a WebSocket.
  • Manipulação prática do corpo da requisição via BodyPublishers e da resposta via BodyHandlers.


Exemplo: requisição GET

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;

public class JavaHttpClientExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.github.com/users/octocat")) .GET() .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("Status: " + response.statusCode()); System.out.println("Corpo: " + response.body()); }}


Exemplo: requisição POST assíncrona

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.util.concurrent.CompletableFuture;

public class AsyncPostExample { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://jsonplaceholder.typicode.com/posts")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString("{\\"title\\":\\"foo\\",\\"body\\":\\"bar\\",\\"userId\\":1}")) .build();

CompletableFuture<HttpResponse<String>> future = client.sendAsync(request, HttpResponse.BodyHandlers.ofString()); future.thenAccept(response -> { System.out.println("Status: " + response.statusCode()); System.out.println("Resposta: " + response.body()); }).join(); }}





2. OkHttp (Square)



OkHttp é uma das bibliotecas mais populares para Android e Java. Ela é conhecida por seu alto desempenho, gerenciamento automático de conexões e suporte a HTTP/2 e SPDY. O OkHttp é usado internamente pelo Retrofit e pelo Picasso.



Características:

  • Suporte a HTTP/2 e multiplexação automática de requisições.
  • Pool de conexões integrado e reutilização de sockets.
  • Manipulação transparente de compressão GZip.
  • Suporte a interceptadores (interceptors) para logging, autenticação e retentativas.
  • Construtores de requisição simples e no estilo fluent.


Adicionar dependência (Maven):

<dependency>    <groupId>com.squareup.okhttp3</groupId>    <artifactId>okhttp</artifactId>    <version>4.
```                    

Recommendations