Client HTTP en Kotlin : faire des requêtes correctement

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

Introduction aux clients HTTP en Kotlin



Le développement moderne en Kotlin est impensable sans interaction avec des API distantes et des services web. Un client HTTP est un outil fondamental qui permet à votre application d'envoyer des requêtes et de recevoir des réponses depuis Internet. Que vous créiez une application mobile, un backend serveur ou une application de bureau, savoir travailler correctement avec les requêtes HTTP est une compétence obligatoire pour tout développeur Kotlin.



Dans cet article, nous allons détailler quelles bibliothèques pour travailler avec HTTP sont disponibles dans l'écosystème Kotlin, comment effectuer des requêtes GET et POST, traiter le JSON et gérer l'asynchronisme. Vous apprendrez comment éviter les erreurs typiques et rendre votre code fiable et performant.



Bibliothèques principales pour les clients HTTP en Kotlin



1. Ktor Client



Ktor est un framework asynchrone moderne, créé par la société JetBrains spécialement pour Kotlin. Ktor Client prend en charge les coroutines, la multiplateforme (JVM, Android, iOS, JS, Native) et fournit un moteur flexible et configurable.



Exemple d'une requête GET basique avec Ktor :



import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*

suspend fun fetchData(): String { val client = HttpClient() val response: HttpResponse = client.get("https://api.example.com/data") client.close() return response.bodyAsText()}


2. OkHttp



OkHttp est l'une des bibliothèques les plus populaires pour Java et Android, qui fonctionne parfaitement aussi avec Kotlin. Elle se distingue par ses hautes performances, sa prise en charge de HTTP/2, son pool de connexions automatique et ses intercepteurs (interceptors).



Exemple d'une requête GET synchrone avec OkHttp :



import okhttp3.OkHttpClientimport okhttp3.Request

fun fetchData(): String { val client = OkHttpClient() val request = Request.Builder() .url("https://api.example.com/data") .build() client.newCall(request).execute().use { response -> return response.body?.string() ?: "" }}


3. Fuel



Fuel est une bibliothèque légère et intuitivement compréhensible pour Kotlin, construite sur la base d'OkHttp. Elle propose un style fonctionnel pour travailler avec les requêtes et un traitement pratique des résultats.



Exemple d'une requête GET avec Fuel :



import com.github.kittinunf.fuel.httpGetimport com.github.kittinunf.result.Result

fun fetchData() { "https://api.example.com/data" .httpGet() .responseString { _, _, result -> when (result) { is Result.Success -> println(result.value) is Result.Failure -> println(result.error) } }}


Comment envoyer correctement des requêtes GET et POST



Requêtes GET



Les requêtes GET sont utilisées pour obtenir des données depuis le serveur. Les paramètres de la requête sont généralement transmis dans l'URL. En utilisant Ktor, les paramètres peuvent être ajoutés via le bloc parameter :



val client = HttpClient()val response = client.get("https://api.example.com/search") {    parameter("query", "Kotlin")    parameter("page", 1)}


Il est important de se rappeler : les requêtes GET ne doivent pas modifier l'état du serveur et ne doivent pas contenir de corps de requête. Toutes les données sont transmises via l'URL ou les en-têtes.



Requêtes POST



Les requêtes POST sont destinées à envoyer des données au serveur (par exemple, création d'une nouvelle ressource). Le corps de la requête peut être au format JSON, Form URL Encoded ou Multipart.



Exemple d'une requête POST avec un corps JSON via Ktor :



import io.ktor.client.request.*import io.ktor.http.*

data class User(val name: String, val email: String)

suspend fun createUser(user: User): String { val client = HttpClient() val response = client.post("https://api.example.com/users") { contentTyp

Blogs

Book Recommendations