OkHttp pour Kotlin : 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

Qu'est-ce qu'OkHttp et pourquoi l'utiliser ?

OkHttp est une bibliothèque HTTP puissante et efficace pour la JVM (Java Virtual Machine), Android et Kotlin/Native, développée par la société Square. Elle offre une API pratique pour effectuer des requêtes HTTP et traiter les réponses. OkHttp est le standard de facto pour la gestion réseau dans l'écosystème Android et est largement utilisé dans les applications serveur Kotlin.

Pourquoi utiliser OkHttp plutôt que les outils Java standards (HttpURLConnection) ?

  • Simplicité et ergonomie : Une API fluide (fluent) propre, facile à lire et à écrire.
  • Performances : Prise en charge intégrée de HTTP/2, compression automatique des réponses (gzip), pool de connexions (connection pooling) et mise en cache.
  • Fiabilité : Nouvelles tentatives automatiques en cas d'échec réseau, résilience face aux erreurs DNS et TLS.
  • Flexibilité : Intercepteurs (interceptors) facilement configurables pour la journalisation, l'authentification, la modification des requêtes et des réponses.
  • Testabilité : Possibilité de simuler la couche réseau avec MockWebServer.

OkHttp est idéal pour les applications Android, les clients d'API REST, les microservices et tout autre projet Kotlin nécessitant une gestion HTTP rapide et fiable.

Installation

OkHttp est distribué via Maven Central. Pour l'ajouter à votre projet, utilisez le système de build Gradle (le plus courant pour Kotlin).

Pour un projet Android / Kotlin/JVM (build.gradle.kts) :

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.12.0")
    // Pour la journalisation (optionnel)
    implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
}

Pour un projet Android / Kotlin/JVM (build.gradle) :

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
}

Pour Maven (pom.xml) :

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

Important : Assurez-vous que la version d'OkHttp est compatible avec votre version de Kotlin. La version la plus récente est toujours disponible sur MVNRepository.

Démarrage rapide

L'exemple le plus simple consiste à effectuer une requête GET et à récupérer le corps de la réponse sous forme de chaîne de caractères.

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

fun main() {
    // 1. Créer un client (généralement un seul pour toute l'application)
    val client = OkHttpClient()

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

    // 3. Exécuter la requête de manière synchrone (bloque le thread actuel)
    client.newCall(request).execute().use { response ->
        if (!response.isSuccessful) {
            throw IOException("Code inattendu $response")
        }
        // 4. Récupérer le corps de la réponse
        println(response.body?.string())
    }
}

Explication :

  1. OkHttpClient() — crée une instance du client. Il est thread-safe, il est donc recommandé d'en créer une seule et de la réutiliser.
  2. Request.Builder() — utilise le modèle "Builder" pour configurer la requête.
  3. client.newCall(request) — crée un nouvel appel (Call) qui peut être exécuté de manière synchrone (execute()) ou asynchrone (enqueue()).
  4. response.use { ... } — garantit que les ressources de la réponse (corps, connexion) sont libérées après utilisation.
  5. response.body?.string() — lit le corps de la réponse sous forme de chaîne. Important : Le corps ne peut être lu qu'une seule fois.

Recommendations