OkHttp pour Java : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

OkHttp pour Java : le client HTTP nouvelle génération

1. Qu'est-ce que c'est et pourquoi l'utiliser

OkHttp est une bibliothèque HTTP moderne et performante pour Java et Android, développée par la société Square. Elle est devenue le standard de facto pour effectuer des requêtes réseau dans l'écosystème Android et est largement utilisée dans les applications Java côté serveur. OkHttp propose une API fluide et épurée pour envoyer des requêtes HTTP et recevoir des réponses, en supportant toutes les fonctionnalités modernes du protocole : HTTP/2, WebSockets, compression GZIP, mise en cache des réponses et reconnexion automatique en cas d'échec.

Pourquoi utiliser OkHttp alors que java.net.HttpURLConnection existe déjà ? D'abord, OkHttp est beaucoup plus simple à utiliser — au lieu de configurations complexes avec gestion de connexion, vous créez simplement une requête et l'exécutez. Ensuite, la bibliothèque résolve de nombreux problèmes « prêts à l'emploi » : elle gère automatiquement les redirections, administre un pool de connexions pour la réutilisation, prend en charge la compression GZIP transparente et sait mettre en cache les réponses pour économiser du trafic. Enfin, OkHttp est à la base de bibliothèques populaires comme Retrofit et Picasso, ce qui la rend indispensable pour les développeurs Android.

OkHttp est idéal pour tout projet Java nécessitant une interaction avec une API REST, le téléchargement de fichiers, l'utilisation de WebSockets ou simplement l'exécution de requêtes HTTP. Grâce au support de HTTP/2, la bibliothèque permet de multiplexer les requêtes via une seule connexion, ce qui accélère considérablement le travail avec les serveurs modernes. La version 4.x et supérieure a été entièrement réécrite en Kotlin, mais conserve une compatibilité ascendante totale avec le code Java, la rendant accessible à tous les développeurs Java.

2. Installation

OkHttp est distribué via Maven Central. Pour ajouter la bibliothèque à votre projet, ajoutez la dépendance dans le fichier build.gradle (pour Gradle) ou pom.xml (pour Maven).

Gradle (projet Android / Java)

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
    // Pour journaliser les requêtes (optionnel)
    implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
}

Maven

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

Pour les modules Java (sans Gradle/Maven)

Téléchargez le fichier JAR depuis Maven Central et ajoutez-le au classpath de votre projet.

Important : OkHttp 4.x nécessite Java 8+ ou Android API 21+. Pour les versions plus anciennes, utilisez OkHttp 3.x.

3. Démarrage rapide — exemple minimal fonctionnel

L'exemple le plus simple consiste à effectuer une requête GET et à afficher le corps de la réponse dans la console. Créez une classe Main.java et copiez le code suivant :

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        // 1. Créer un client HTTP (généralement un seul pour toute l'application)
        OkHttpClient client = new OkHttpClient();

        // 2. Construire la requête
        Request request = new Request.Builder()
                .url("https://api.github.com/users/octocat")
                .get()
                .build();

        // 3. Exécuter la requête de manière synchrone (bloque le thread)
        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                System.out.println("Réponse : " + response.body().string());
            } else {
                System.err.println("Erreur : " + response.code());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ce code effectue une requête GET vers l'API GitHub

Recommendations