cURL → Java
Java HTTP Client Generator

Guía de desarrollo del convertidor de cURL a Java (Java 11+ HttpClient, OkHttp y Spring WebClient)

Convierta comandos cURL en solicitudes HTTP de Java para producción con java.net.http.HttpClient nativo, OkHttp3 o Spring WebClient.

100% Client-Side Privacy
Zero Server Transmission
Presets:
Entrada de 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 y protocolo
POSTHTTPS
Host destino y ruta
https://api.github.com
0 query params
Cabeceras y carga útil
4 headers • BEARER Auth
JSON Payload (115 B)

Transpilación 100% en el cliente

El análisis de sintaxis de cURL, la tokenización de argumentos y la síntesis de código Java se ejecutan en la memoria de su navegador sin conexiones externas.

Java 11+ moderno y ecosistema empresarial

Transpila comandos de terminal a java.net.http.HttpClient nativo, OkHttp 3/4, Spring WebClient (reactivo), Spring RestTemplate y Apache HttpClient 5.

Paridad completa de opciones y autenticación

Analiza con precisión cabeceras (-H), credenciales Bearer/Basic (-u), tiempos de espera (-m), certificados SSL (-k), redirecciones (-L) y JSON en Java idiomático.

Referencia técnica y guía de arquitectura

Guía de desarrollo del convertidor de cURL a Java (Java 11+ HttpClient, OkHttp y Spring WebClient) — Guía de referencia

Convierta comandos cURL en solicitudes HTTP de Java para producción con java.net.http.HttpClient nativo, OkHttp3 o Spring WebClient.

Parámetros clave y controles

clientTargetstring

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

Por defecto: HttpClient (Java 11+)
timeoutSecondsinteger

Tiempo de espera de conexión y solicitud en segundos configurado en el generador de cliente.

Por defecto: 10
asyncModeboolean

Genera llamadas asíncronas no bloqueantes utilizando CompletableFuture o Mono/Flux de Project Reactor.

Por defecto: false
cleanDevToolsboolean

Elimina los pseudo-encabezados de las herramientas de desarrollo (:authority, :method, :path, :scheme) para evitar excepciones IllegalArgumentException en Java.

Por defecto: true

Consejos profesionales y mejores prácticas

Reutilizar HttpClient como una instancia Singleton

Cree siempre una única instancia estática de HttpClient u OkHttpClient por aplicación. Instanciar un nuevo cliente por cada petición genera grupos de hilos innecesarios, gestores de conexiones y sesiones SSL redundantes, provocando agotamiento de sockets y alto consumo de memoria.

Especificar explícitamente UTF-8 en BodyPublishers

Al enviar cargas útiles de texto o JSON con Java 11+ HttpClient, especifique siempre StandardCharsets.UTF_8: HttpRequest.BodyPublishers.ofString(jsonString, StandardCharsets.UTF_8). Omitir el conjunto de caracteres usa la codificación predeterminada del sistema, arriesgando la corrupción de caracteres especiales.

Aprovechar sendAsync() con CompletableFuture para alto rendimiento

Para microservicios con alta carga de E/S, utilice client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) en lugar del método bloqueante send(). Encadene fases reactivas con thenApply() para liberar hilos de trabajo.

Errores comunes y solución de problemas

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

Java 11+ HttpClient restringe estrictamente los pseudo-encabezados (:authority, etc.) y encabezados del sistema (Connection, Host). Active la opción 'Limpiar encabezados de DevTools' para eliminarlos antes de ejecutar el generador de peticiones.

La petición se bloquea indefinidamente sin lanzar excepción de tiempo de espera

Java 11+ HttpClient no incluye un tiempo de espera predeterminado para las solicitudes. Configure explícitamente Duration.ofSeconds(...) tanto en HttpClient.newBuilder().connectTimeout(...) como en HttpRequest.newBuilder().timeout(...).

El servidor de destino responde con HTTP 415 Unsupported Media Type

Compruebe que el generador de peticiones configure explícitamente el encabezado header("Content-Type", "application/json; charset=utf-8") al enviar un cuerpo JSON.

Preguntas frecuentes (FAQ)

¿Cuándo conviene elegir Java 11+ HttpClient frente a OkHttp o Spring WebClient?▼

Utilice Java 11+ java.net.http.HttpClient en microservicios Java modernos sin dependencias externas. Elija OkHttp3 para desarrollo Android o cuando requiera interceptores avanzados y ajuste fino del pool de conexiones. Opte por Spring WebClient en entornos Spring Boot 2/3 donde el modelo reactivo (Mono/Flux) sea estándar.

¿Cómo se traduce la autenticación básica de cURL (-u usuario:contraseña) a Java?▼

En Java 11+ HttpClient puede configurarse un Authenticator en el cliente o añadirse directamente header("Authorization", "Basic " + Base64.getEncoder().encodeToString("usuario:contraseña".getBytes(StandardCharsets.UTF_8))). En OkHttp se emplea Credentials.basic("usuario", "contraseña").

¿Cómo se gestiona la carga de archivos multipart/form-data en Java?▼

OkHttp lo soporta nativamente mediante MultipartBody.Builder. En Java 11+ HttpClient se genera un ayudante publicador multipart compatible con RFC utilizando delimitadores de límite y HttpRequest.BodyPublishers.ofFile(path).

¿Se envían los comandos cURL o credenciales confidenciales a servidores externos?▼

No. Todo el análisis sintáctico, la normalización de cabeceras y la generación de código Java se ejecuta íntegramente en el navegador de su equipo local, garantizando privacidad total.

Herramientas y utilidades relacionadas

Todas las herramientas →