Como fazer requisições HTTP em Java?

Fazer requisições HTTP em Java é essencial para consumir APIs e se conectar a serviços web, utilizando bibliotecas como HttpClient e RestTemplate.

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!

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

Compartilhe este tutorial: Como fazer requisições HTTP em Java

Compartilhe este tutorial

Continue aprendendo:

O que é um Controller no Spring MVC

No Spring MVC, um Controller é responsável por lidar com requisições HTTP e retornar respostas para o cliente.

Tutorial anterior

Como configurar o CORS em uma API Java

O CORS (Cross-Origin Resource Sharing) é uma política de segurança que controla quais domínios podem acessar recursos de uma API Java.

Próximo tutorial