cURL → Java
Java HTTP Client Generator

Guide développeur du convertisseur cURL vers Java (Java 11+ HttpClient, OkHttp & Spring WebClient)

Convertissez vos commandes cURL en requêtes HTTP Java prêtes pour la production avec java.net.http.HttpClient natif, OkHttp3 ou Spring WebClient.

100% Client-Side Privacy
Zero Server Transmission
Presets:
Commande cURL en entrée
// 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éthode HTTP et protocole
POSTHTTPS
Hôte cible et route
https://api.github.com
0 query params
En-têtes et charge utile
4 headers • BEARER Auth
JSON Payload (115 B)

Transpilation 100% côté client

L'analyse syntaxique cURL, la segmentation des arguments et la génération de code Java s'exécutent entièrement dans la mémoire de votre navigateur sans requêtes serveur.

Java 11+ moderne et écosystème d'entreprise

Transpile les commandes de terminal en java.net.http.HttpClient natif, OkHttp 3/4, Spring WebClient (réactif), Spring RestTemplate et Apache HttpClient 5.

Parité complète des options et de l'authentification

Gère fidèlement les en-têtes (-H), identifiants Bearer/Basic (-u), délais (-m), drapeaux SSL (-k), redirections (-L) et JSON en Java idiomatique.

Référence technique et guide d'architecture

Guide développeur du convertisseur cURL vers Java (Java 11+ HttpClient, OkHttp & Spring WebClient) — Guide de référence

Convertissez vos commandes cURL en requêtes HTTP Java prêtes pour la production avec java.net.http.HttpClient natif, OkHttp3 ou Spring WebClient.

Paramètres clés et contrôles

clientTargetstring

Bibliothèque cliente HTTP Java ciblée : java.net.http.HttpClient (Java 11+), Square OkHttp3 ou Spring 5/6 WebClient.

Par défaut : HttpClient (Java 11+)
timeoutSecondsinteger

Délai d'expiration de connexion et de requête en secondes configuré sur le constructeur du client.

Par défaut : 10
asyncModeboolean

Génère des appels asynchrones non bloquants avec CompletableFuture ou Project Reactor Mono/Flux.

Par défaut : false
cleanDevToolsboolean

Supprime les pseudo-en-têtes DevTools (:authority, :method, :path, :scheme) pour éviter les exceptions IllegalArgumentException en Java.

Par défaut : true

Conseils de pro et bonnes practices

Réutiliser HttpClient sous forme d'instance Singleton

Créez toujours une unique instance statique de HttpClient ou d'OkHttpClient par application. Instancier un nouveau client par requête génère des pools de threads inutiles, des gestionnaires de connexion et des sessions SSL redondantes, entraînant l'épuisement des sockets et une consommation mémoire excessive.

Spécifier explicitement UTF-8 dans BodyPublishers

Lors de l'émission de données JSON ou textuelles avec Java 11+ HttpClient, précisez systématiquement StandardCharsets.UTF_8 : HttpRequest.BodyPublishers.ofString(jsonString, StandardCharsets.UTF_8). Omettre le jeu de caractères applique l'encodage système par défaut, risquant de corrompre les caractères accentués ou non-ASCII.

Exploiter sendAsync() avec CompletableFuture pour un débit maximal

Pour les microservices à forte composante réseau, préférez client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) à la méthode bloquante send(). Enchaînez les étapes réactives via thenApply() afin de libérer les threads pour les traitements concurrents.

Pièges courants et dépannage

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

Java 11+ HttpClient interdit formellement les pseudo-en-têtes (:authority, etc.) ainsi que certains en-têtes système (Connection, Host). Activez le nettoyage automatique des en-têtes DevTools pour les filtrer avant la construction de la requête.

La requête se bloque indéfiniment sans lever d'exception de délai dépassé

Java 11+ HttpClient ne comporte aucun délai d'attente par défaut. Définissez explicitement Duration.ofSeconds(...) à la fois sur HttpClient.newBuilder().connectTimeout(...) et HttpRequest.newBuilder().timeout(...).

Le serveur cible renvoie une erreur HTTP 415 Unsupported Media Type

Vérifiez que votre constructeur de requête configure explicitement l'en-tête header("Content-Type", "application/json; charset=utf-8") lors de la transmission d'un corps JSON.

Foire aux questions (FAQ)

Quand faut-il privilégier Java 11+ HttpClient par rapport à OkHttp ou Spring WebClient?▼

Privilégiez java.net.http.HttpClient (Java 11+) pour les projets Java modernes ne nécessitant aucune dépendance externe. Choisissez OkHttp3 pour le développement Android ou lors d'un besoin d'intercepteurs sophistiqués. Adoptez Spring WebClient au sein de l'écosystème Spring Boot 2/3 fonctionnant sur le modèle réactif Project Reactor (Mono/Flux).

Comment l'authentification basique cURL (-u utilisateur:motdepasse) est-elle traduite en Java?▼

Avec Java 11+ HttpClient, configurez un Authenticator sur le client ou injectez header("Authorization", "Basic " + Base64.getEncoder().encodeToString("utilisateur:motdepasse".getBytes(StandardCharsets.UTF_8))). Avec OkHttp, utilisez la méthode utilitaire Credentials.basic("utilisateur", "motdepasse").

Comment s'effectue le téléversement de fichier multipart/form-data en Java?▼

OkHttp prend en charge le format nativement via MultipartBody.Builder. Pour Java 11+ HttpClient, un helper de publication multipart conforme au standard RFC est généré avec délimiteurs de limites et HttpRequest.BodyPublishers.ofFile(path).

Mes commandes cURL ou clés d'API sont-elles transmises à des serveurs tiers?▼

Absolument pas. L'analyse syntaxique, le nettoyage des en-têtes et la génération du code Java s'exécutent intégralement et exclusivement au sein du bac à sable de votre navigateur web.

Outils et utilitaires connexes

Tous les outils →