Client HTTP en Kotlin : effectuer des requêtes correctement de A à Z

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

Client HTTP en Kotlin : effectuer des requêtes correctement de A à Z

\n

Le développement moderne en Kotlin est impensable sans interaction avec des serveurs distants. Qu'il s'agisse d'une application mobile Android ou d'une solution serveur avec Ktor, les requêtes HTTP sont le fondement de l'échange de données. Dans cet article, nous allons voir comment créer des clients HTTP en Kotlin en utilisant les meilleures pratiques, les bibliothèques populaires et une approche moderne avec les coroutines. Vous apprendrez à effectuer des requêtes GET et POST, à gérer les erreurs, à travailler avec JSON et à construire une architecture de couche réseau fiable.

\n\n

Pourquoi Kotlin est-il idéal pour les clients HTTP ?

\n

Kotlin offre une syntaxe concise, une sécurité nulle (null safety) et une compatibilité totale avec l'écosystème Java. Grâce aux coroutines, les requêtes asynchrones deviennent intuitives, sans callbacks lourds. Vous pouvez écrire un code séquentiel qui s'exécute de manière asynchrone, ce qui simplifie grandement la lecture et le débogage. De plus, Kotlin est largement utilisé dans le développement Android, où les requêtes réseau sont une tâche quotidienne.

\n\n

Bibliothèques principales pour HTTP en Kotlin

\n

Aujourd'hui, trois approches sont les plus populaires :

\n
    \n
  • Ktor Client — un client multiplateforme de JetBrains. Il prend en charge JVM, Android, iOS, JS et Native. Idéal pour les projets nécessitant une base de code unique.
  • \n
  • OkHttp + Retrofit — la pile classique pour Android/JVM. OkHttp gère le travail réseau de bas niveau, tandis que Retrofit génère des interfaces typées.
  • \n
  • Fuel — une bibliothèque légère avec une approche fonctionnelle. Convient aux petits projets.
  • \n
\n

Dans cet article, nous nous concentrerons sur Ktor et OkHttp, car ils couvrent 90 % des scénarios.

\n\n

Configuration du projet et premières requêtes

\n

Pour commencer, ajoutons les dépendances. Si vous utilisez Gradle (Kotlin DSL), incluez Ktor Client :

\n
dependencies {\n    implementation("io.ktor:ktor-client-core:2.3.7")\n    implementation("io.ktor:ktor-client-cio:2.3.7") // moteur CIO\n    implementation("io.ktor:ktor-client-content-negotiation:2.3.7")\n    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")\n}
\n

Pour OkHttp, les dépendances seront les suivantes :

\n
dependencies {\n    implementation("com.squareup.okhttp3:okhttp:4.12.0")\n    implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")\n    implementation("com.google.code.gson:gson:2.10.1")\n}
\n\n

Requête GET avec Ktor Client

\n

Créons un client simple et effectuons une requête GET vers une API publique :

\n
import io.ktor.client.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\n\nsuspend fun fetchData(): String {\n    val client = HttpClient()\n    val response: HttpResponse = client.get("https://jsonplaceholder.typicode.com/posts/1")\n    val body = response.bodyAsText()\n    client.close()\n    return body\n}\n\n// Utilisation dans une coroutine\nfun main() = runBlocking {\n    println(fetchData())\n}
\n

Remarque : suspend est le mot-clé Kotlin pour les fonctions suspendues. Cela permet d'exécuter la requête sans bloquer le thread.

\n\n

Requête GET avec OkHttp

\n

Un exemple similaire avec OkHttp ressemble à ceci :

\n
import okhttp3.OkHttpClient\nimport okhttp3.Request\n\nfun fetchDataSync(): String {\n    val client = OkHttpClient()\n    val request = Request.Builder()\n        .url("https://jsonplaceholder.typicode.com/posts/1")\n        .build()\n    client.newCall(request).execute().use { response ->\n        return response.body?.string() ?: "Erreur"\n    }\n}\n\n// Appel dans un thread normal (bloquant)\nfun main() {\n    println(fetchDataSync())\n}
\n

OkHttp est synchrone par défaut, mais il peut facilement être adapté aux coroutines avec suspendCancellableCoroutine.

\n\n

Requêtes POST et travail avec JSON

\n

L'envoi de données est la deuxième opération la plus importante. Voyons comment envoyer un JS

Blogs

Book Recommendations