Exemple de didacticiel OkHttp Android

Exemple de didacticiel OkHttp Android

Introduction

OkHttp est une bibliothèque Android populaire pour effectuer des requêtes HTTP et HTTPS. Elle fournit une interface facile à utiliser et un large éventail de fonctionnalités, ce qui la rend idéale pour le développement d’applications Android. Ce didacticiel vous guidera pas à pas dans l’utilisation d’OkHttp pour effectuer des requêtes réseau dans vos applications Android.

Configuration

Pour commencer à utiliser OkHttp dans vos projets Android, vous devez l’ajouter en tant que dépendance à votre fichier build.gradle :

groovy
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
}

Bases des requêtes

Les requêtes HTTP sont effectuées à l’aide de la classe OkHttpClient. La création d’une instance de OkHttpClient vous permet de définir des configurations par défaut pour toutes vos requêtes, telles que les délais d’attente et les intercepteurs.

Pour effectuer une requête GET simple, vous pouvez 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 l'échec
}

override fun onResponse(call: Call, response: Response) {
// Gérer la réponse
}
})

Requêtes POST et PUT

Pour effectuer des requêtes POST ou PUT, vous devez utiliser la classe RequestBody. RequestBody vous permet de fournir les données à envoyer 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 est effectuée à l’aide de la classe Response. Response fournit des informations sur la réponse, telles que le code d’état, les en-têtes et le corps.

Pour obtenir le corps de la réponse sous forme de chaîne :

kotlin
val responseBody = response.body?.string()

Pour obtenir le corps de la réponse sous forme d’un flux :

kotlin
val responseBodyStream = response.body?.byteStream()

Rafraîchissement des jetons d’accès

OkHttp fournit un moyen intégré d’intercepter les demandes et les réponses, ce qui le rend utile pour gérer le rafraîchissement des jetons d’accès. Vous pouvez utiliser un intercepteur pour intercepter les demandes ayant échoué avec un code d’état 401 et automatiquement demander 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 bibliothèque puissante et polyvalente qui simplifie la création de requêtes HTTP et HTTPS dans les applications Android. Ce didacticiel vous a fourni les bases de l’utilisation d’OkHttp, de la configuration des requêtes à la gestion des réponses. Pour plus d’informations, consultez la documentation officielle d’OkHttp sur le site Web d’OkHttp.

FAQ

1. OkHttp est-il compatible avec les versions antérieures d’Android ?
Oui, OkHttp est compatible avec les versions d’Android 4.0 (Ice Cream Sandwich) et ultérieures.

2. Comment puis-je annuler une requête OkHttp ?
Vous pouvez annuler une requête OkHttp en appelant la méthode cancel() sur l’objet d’appel.

3. Comment puis-je gérer les exceptions dans OkHttp ?
Les exceptions dans OkHttp peuvent être gérées à l’aide de la classe Callback. La méthode onFailure() est appelée si une exception se produit.

4. Comment puis-je configurer les délais d’attente dans OkHttp ?
Vous pouvez configurer les délais d’attente à l’aide du constructeur OkHttpClient.Builder. Les propriétés connectTimeout(), readTimeout() et writeTimeout() permettent de définir respectivement les délais d’attente de connexion, de lecture et d’écriture.

5. Comment puis-je utiliser OkHttp avec des requêtes asynchrones ?
Vous pouvez utiliser OkHttp avec des requêtes asynchrones en appelant la méthode enqueue() sur l’objet d’appel. Cela exécutera la requête en arrière-plan et appellera les méthodes de rappel lorsque la requête sera terminée.

6. Comment puis-je intercepter les requêtes et les réponses OkHttp ?
Vous pouvez intercepter les requêtes et les réponses OkHttp en créant un intercepteur et en l’ajoutant à l’instance OkHttpClient.

7. Comment puis-je mettre en cache les réponses OkHttp ?
Vous pouvez mettre en cache les réponses OkHttp à l’aide de la classe Cache. Le constructeur OkHttpClient.Builder dispose d’une méthode cache() qui vous permet de configurer le cache.

8. Comment puis-je utiliser OkHttp avec une connexion HTTPS ?
Pour utiliser OkHttp avec une connexion HTTPS, vous devez fournir un instance SSLSocketFactory. Vous pouvez le faire en appelant la méthode sslSocketFactory() sur le constructeur OkHttpClient.Builder.