cURL → Java
Java HTTP Client Generator

Guia do Desenvolvedor: Conversor de cURL para Java (Java 11+ HttpClient, OkHttp e Spring WebClient)

Converta comandos cURL em requisições HTTP Java prontas para produção com java.net.http.HttpClient nativo, OkHttp3 ou Spring WebClient.

100% Client-Side Privacy
Zero Server Transmission
Presets:
Entrada do comando cURL
// Java 11+ Native java.net.http.HttpClient
// Built into JDK 11, 17, 21+ standard library — zero external dependencies required!

package com.example.client;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class HttpClientExample {

    public static void main(String[] args) {
    try {
        // 1. Configure and build HttpClient
        HttpClient client = HttpClient.newBuilder()
            .version(HttpClient.Version.HTTP_2)
            .connectTimeout(Duration.ofSeconds(30))
            .build();

        // 2. Prepare request payload
        String requestBody = "{\"title\": \"Bug in auth session\", \"body\": \"Need to verify token expiration handling\", \"labels\": [\"bug\", \"priority\"]}";

        // 3. Build HttpRequest
        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
            .uri(URI.create("https://api.github.com/repos/octocat/Hello-World/issues"))
            .timeout(Duration.ofSeconds(30))
            .header("Accept", "application/vnd.github+json")
            .header("Authorization", "Bearer gho_16C7e42F292c6912E7710c838347Ae178B4a")
            .header("X-GitHub-Api-Version", "2022-11-28")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(requestBody));
        HttpRequest request = requestBuilder.build();

        // Synchronous execution
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println("Status Code: " + response.statusCode());
        System.out.println("Response Body:\n" + response.body());
    } catch (Exception e) {
        System.err.println("HTTP Client Error: " + e.getMessage());
        e.printStackTrace();
    }
    }
}
Método HTTP e protocolo
POSTHTTPS
Host de destino e rota
https://api.github.com
0 query params
Cabeçalhos e payload
4 headers • BEARER Auth
JSON Payload (115 B)

Transpilação 100% no cliente

A análise de sintaxe cURL, tokenização de argumentos e síntese de código Java ocorrem na memória do seu navegador, sem envio a servidores.

Java 11+ moderno e ecossistema corporativo

Transpila comandos de terminal para java.net.http.HttpClient nativo, OkHttp 3/4, Spring WebClient (reativo), Spring RestTemplate e Apache HttpClient 5.

Paridade total de opções e autenticação

Analisa com precisão cabeçalhos (-H), credenciais Bearer/Basic (-u), timeouts (-m), certificados SSL (-k), redirecionamentos (-L) e JSON em Java idiomático.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Conversor de cURL para Java (Java 11+ HttpClient, OkHttp e Spring WebClient) — Guia de referência

Converta comandos cURL em requisições HTTP Java prontas para produção com java.net.http.HttpClient nativo, OkHttp3 ou Spring WebClient.

Parâmetros principais e controles

clientTargetstring

Biblioteca cliente HTTP Java de destino: java.net.http.HttpClient (Java 11+), Square OkHttp3 ou Spring 5/6 WebClient.

Padrão: HttpClient (Java 11+)
timeoutSecondsinteger

Tempo limite de conexão e de requisição em segundos configurado no builder do cliente.

Padrão: 10
asyncModeboolean

Gera chamadas assíncronas não bloqueantes utilizando CompletableFuture ou Project Reactor Mono/Flux.

Padrão: false
cleanDevToolsboolean

Remove pseudo-cabeçalhos de ferramentas de desenvolvedor (:authority, :method, :path, :scheme) para evitar IllegalArgumentException no Java.

Padrão: true

Dicas profissionais e melhores práticas

Reutilize o HttpClient como uma Instância Singleton

Crie sempre uma única instância estática de HttpClient ou OkHttpClient por aplicação. Instanciar um novo cliente por requisição cria pools de threads desnecessários, gerenciadores de conexão e sessões SSL adicionais, resultando em esgotamento de sockets e alto consumo de memória.

Especifique UTF-8 explicitamente em BodyPublishers

Ao enviar dados de texto ou JSON com o Java 11+ HttpClient, defina sempre StandardCharsets.UTF_8: HttpRequest.BodyPublishers.ofString(jsonString, StandardCharsets.UTF_8). Omitir o charset utiliza o encoding padrão do sistema operacional, o que pode corromper caracteres acentuados ou especiais.

Aproveite sendAsync() com CompletableFuture para Alto Rendimento

Em microsserviços orientados a E/S, utilize client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) em vez da chamada bloqueante send(). Encadeie etapas reativas com thenApply() para manter as threads de trabalho disponíveis.

Problemas comuns e solução de problemas

java.lang.IllegalArgumentException: restricted header name or invalid colon character

O HttpClient do Java 11+ restringe estritamente pseudo-cabeçalhos (:authority, etc.) e cabeçalhos reservados pelo sistema (Connection, Host). Ative a opção 'Limpar cabeçalhos do DevTools' para removê-los antes de construir a requisição.

A requisição trava indefinidamente sem lançar exceção de timeout

O HttpClient do Java 11+ não possui timeout de requisição por padrão. Configure explicitamente Duration.ofSeconds(...) tanto em HttpClient.newBuilder().connectTimeout(...) quanto em HttpRequest.newBuilder().timeout(...).

Servidor de destino retorna HTTP 415 Unsupported Media Type

Certifique-se de que o builder da requisição define explicitamente header("Content-Type", "application/json; charset=utf-8") ao enviar payloads JSON.

Perguntas frequentes (FAQ)

Quando escolher Java 11+ HttpClient em vez de OkHttp ou Spring WebClient?▼

Utilize o Java 11+ java.net.http.HttpClient para microsserviços modernos sem dependências externas. Opte pelo OkHttp3 em desenvolvimento Android ou quando precisar de interceptores avançados e ajuste de pool de conexões. Escolha o Spring WebClient em projetos Spring Boot 2/3 que utilizam a pilha reativa com Project Reactor (Mono/Flux).

Como a autenticação básica do cURL (-u usuário:senha) é convertida para Java?▼

No Java 11+ HttpClient, você pode definir um Authenticator no cliente ou injetar o cabeçalho manualmente: header("Authorization", "Basic " + Base64.getEncoder().encodeToString("usuário:senha".getBytes(StandardCharsets.UTF_8))). No OkHttp, utiliza-se Credentials.basic("usuário", "senha").

Como requisições multipart/form-data de upload de arquivo são estruturadas no Java?▼

O OkHttp oferece suporte nativo através do MultipartBody.Builder. Para o Java 11+ HttpClient, é gerado um utilitário em conformidade com o padrão RFC contendo delimitadores de boundary e HttpRequest.BodyPublishers.ofFile(path).

Meus comandos cURL ou credenciais de API são enviados para servidores externos?▼

Não. 100% da análise sintática, higienização de cabeçalhos e geração de código Java é executada exclusivamente dentro do navegador web do seu computador, garantindo sigilo absoluto.

Ferramentas e utilitários relacionados

Todas as ferramentas →