Exemple de didacticiel OkHttp Android
Introduction
OkHttp se distingue comme une librairie incontournable pour les développeurs Android souhaitant effectuer des requêtes HTTP et HTTPS. Son interface utilisateur conviviale, alliée à un éventail de fonctionnalités, en fait un outil de choix pour les applications Android. Ce tutoriel a pour objectif de vous accompagner pas à pas dans l'intégration et l'exploitation d'OkHttp pour les échanges de données réseau au sein de vos projets Android.
Mise en place initiale
Avant de pouvoir utiliser OkHttp, il est impératif de l'intégrer comme dépendance dans votre fichier build.gradle, comme suit:
groovy
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
}
Notions de base sur les requêtes
L'exécution des requêtes HTTP est assurée par la classe OkHttpClient. Instancier un OkHttpClient permet de définir des paramètres par défaut pour l'ensemble de vos requêtes, tels que les délais d'attente et les intercepteurs.
Pour effectuer une requête GET basique, il convient d'utiliser la méthode newCall():
kotlin
val client = OkHttpClient()
val request = Request.Builder()
.url("https://example.com/api/v1/users")
.build()
val call = client.newCall(request)
call.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
// Gérer le cas d'échec
}
override fun onResponse(call: Call, response: Response) {
// Traiter la réponse
}
})
Requêtes POST et PUT
Les requêtes POST et PUT nécessitent l'utilisation de la classe RequestBody, qui permet de fournir les données à transmettre avec la requête.
Pour une requête POST:
kotlin
val requestBody = FormBody.Builder()
.add("username", "johndoe")
.add("password", "secret")
.build()
val request = Request.Builder()
.url("https://example.com/api/v1/users")
.post(requestBody)
.build()
// ...
Pour une requête PUT:
kotlin
val requestBody = RequestBody.create(MediaType.parse("application/json"), json)
val request = Request.Builder()
.url("https://example.com/api/v1/users/1")
.put(requestBody)
.build()
// ...
Gestion des réponses
La gestion des réponses s'effectue via la classe Response. Cette dernière donne accès aux informations relatives à la réponse, telles que le code d'état, les en-têtes et le corps.
Pour récupérer le corps de la réponse sous forme de chaîne de caractères:
kotlin
val responseBody = response.body?.string()
Pour obtenir le corps de la réponse sous forme de flux:
kotlin
val responseBodyStream = response.body?.byteStream()
Actualisation des jetons d'accès
OkHttp intègre un mécanisme d'interception des requêtes et des réponses, particulièrement utile pour la gestion du renouvellement des jetons d'accès. Un intercepteur permet d'identifier les requêtes ayant échoué avec un code d'état 401 et de solliciter automatiquement un nouveau jeton d'accès.
kotlin
class AuthInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val response = chain.proceed(request)
if (response.code == 401) {
// Demander un nouveau jeton d'accès
// Reconstruire la requête avec le nouveau jeton d'accès
val newRequest = request.newBuilder()
.addHeader("Authorization", "Bearer $newAccessToken")
.build()
// Renvoyer la nouvelle requête
return chain.proceed(newRequest)
}
return response
}
}
Conclusion
OkHttp est une librairie puissante et polyvalente qui simplifie la réalisation de requêtes HTTP et HTTPS dans les applications Android. Ce tutoriel vous a exposé les bases de son utilisation, de la configuration des requêtes à la gestion des réponses. Pour une étude plus approfondie, veuillez vous référer à la documentation officielle d'OkHttp disponible sur le site Web d'OkHttp.
Questions fréquemment posées
1. OkHttp est-il compatible avec les anciennes versions d'Android ?
Oui, OkHttp est compatible à partir d'Android 4.0 (Ice Cream Sandwich).
2. Comment annuler une requête OkHttp ?
L'annulation d'une requête OkHttp se fait en appelant la méthode cancel() sur l'objet d'appel correspondant.
3. Comment gérer les exceptions dans OkHttp ?
La gestion des exceptions dans OkHttp passe par la classe Callback. La méthode onFailure() est invoquée lorsqu'une exception se produit.
4. Comment configurer les délais d'attente avec OkHttp ?
Les délais d'attente se configurent via le constructeur OkHttpClient.Builder, en utilisant respectivement les méthodes connectTimeout(), readTimeout() et writeTimeout() pour définir les délais de connexion, de lecture et d'écriture.
5. Comment utiliser OkHttp avec des requêtes asynchrones ?
Les requêtes asynchrones s'effectuent en utilisant la méthode enqueue() sur l'objet d'appel. Cela lance la requête en arrière-plan et invoque les méthodes de rappel une fois la requête terminée.
6. Comment intercepter les requêtes et réponses OkHttp ?
L'interception des requêtes et réponses OkHttp nécessite la création d'un intercepteur à ajouter à l'instance OkHttpClient.
7. Comment mettre en cache les réponses OkHttp ?
La mise en cache des réponses OkHttp est réalisée avec la classe Cache. Le constructeur OkHttpClient.Builder propose une méthode cache() pour configurer le cache.
8. Comment utiliser OkHttp avec une connexion HTTPS ?
Pour utiliser OkHttp avec une connexion HTTPS, vous devez fournir une instance de SSLSocketFactory. Cela se fait en utilisant la méthode sslSocketFactory() du constructeur OkHttpClient.Builder.