Como fazer requisições HTTP em Java?
Em aplicações Java, muitas vezes é necessário consumir APIs REST ou realizar chamadas para servidores web. Para isso, existem diversas formas de fazer requisições HTTP, usando bibliotecas nativas ou externas.
1. Fazendo Requisições com HttpURLConnection (Nativo do Java)
O HttpURLConnection é a forma nativa do Java para fazer chamadas HTTP.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpExample {
public static void main(String[] args) throws Exception {
URL url = new URL("https://jsonplaceholder.typicode.com/posts/1");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output;
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
}
}
Explicação:
- Cria uma conexão com uma API.
- Define o método GET e lê a resposta.
- Funciona nativamente no Java, sem bibliotecas externas.
2. Fazendo Requisições com Java HttpClient (Java 11+)
O HttpClient foi introduzido no Java 11 e substitui o HttpURLConnection como forma recomendada de fazer requisições HTTP.
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Explicação:
- Usa HttpClient do Java 11 para fazer requisições mais simples e modernas.
- Retorna diretamente o conteúdo da API.
3. Fazendo Requisições com RestTemplate (Spring Boot)
O RestTemplate é a forma recomendada para fazer chamadas HTTP em Spring Boot.
import org.springframework.web.client.RestTemplate;
public class RestTemplateExample {
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
String url = "https://jsonplaceholder.typicode.com/posts/1";
String response = restTemplate.getForObject(url, String.class);
System.out.println(response);
}
}
Explicação:
RestTemplate
simplifica chamadas HTTP no Spring Boot.- Ideal para consumir APIs REST.
4. Fazendo Requisições com WebClient (Spring Boot Moderno)
O WebClient é a substituição do RestTemplate, recomendado para aplicações reativas.
import org.springframework.web.reactive.function.client.WebClient;
public class WebClientExample {
public static void main(String[] args) {
WebClient client = WebClient.create("https://jsonplaceholder.typicode.com");
String response = client.get()
.uri("/posts/1")
.retrieve()
.bodyToMono(String.class)
.block();
System.out.println(response);
}
}
Explicação:
WebClient
permite requisições assíncronas e reativas.- Ideal para microsserviços e aplicações não bloqueantes.
Conclusão
Existem várias maneiras de fazer requisições HTTP em Java:
HttpURLConnection
é nativo, mas verboso.HttpClient
(Java 11+) é moderno e simplificado.RestTemplate
(Spring Boot) facilita o consumo de APIs.WebClient
é a opção reativa recomendada para aplicações modernas.
Escolha a abordagem que melhor se adapta ao seu projeto!
Qual a melhor maneira de consumir APIs REST em Java?
O consumo de APIs REST é uma necessidade em quase todas as aplicações modernas. No passado, fazer chamadas HTTP em Java era um processo manual e complicado, exigindo o uso de HttpURLConnection
. Com a evolução do Java e frameworks como Spring Boot, ferramentas como HttpClient
, RestTemplate
e WebClient
tornaram esse processo muito mais simples e eficiente.
Algumas aplicações:
- Integração com APIs externas
- Consumo de serviços REST em aplicações Java
- Comunicação entre microsserviços
- Automação de requisições HTTP
Dicas para quem está começando
- Se estiver no Java 8 ou anterior, use
HttpURLConnection
- Para projetos no Java 11+, prefira
HttpClient
- No Spring Boot, use
RestTemplate
para requisições simples - Se precisar de chamadas assíncronas, utilize
WebClient
Contribuições de Rodrigo Farias