HTTP 1 - Retrofit de base
ATTENTION : L'outil principal de débogage pour les appels réseaux est le Network Inspector dans Android Studio.
- Cliquer sur Fichier / File ou le symbole ☰ en haut à gauche.
- Choisir View / Tool Windows / AppInspection.
- Dans la fenêtre AppInspection, choisir l'onglet Network Inspector.
- Tu devrais voir apparaître les appels réseaux de ton application.
Retrofit est une librairie qui permet de faire des appels HTTP de manière simple et efficace.
Elle est recommandée par la doc standard d'Android pour faire des appels réseaux source.
Le code de cette recette est disponible ici.
AndroidManifest.xml
Le premier élément est d'accorder à notre application la permission d'utiliser internet.
Cela se fait en ajoutant la balise suivante entre les balises <manifest> et <application> dans le fichier AndroidManifest.xml.
build.gradle
Il va falloir ajouter les dépendances permettant d'utiliser Retrofit dans le build.gradle.kts.
GitHubApi.kt
L'interface API indique à retrofit quelles actions on souhaite permettre:
Regardons en détail:
- L'annotation
@GETindique que c'est une requête de type GET. - "users/{utilisateur}/repos" indique l'url qui sera envoyée.
- Le paramètre utilisateur va être inséré dans l'URL.
- Le Call<String> indique que la réponse sera lue comme un String.
RetrofitInstance.kt
La prochaine étape est de construire un objet pour envoyer les requêtes concrètes de Retrofit:
Ici on va surtout s'assurer d'avoir l'url de départ qui pointe sur le bon serveur. Dans l'exemple, on pointe vers l'API de Github.
Points importants:
- Le loggingInterceptor permet de voir toutes les requêtes et réponses HTTP dans le logcat
- Le niveau BODY affiche les en-têtes ET le contenu complet des requêtes/réponses
- On ajoute l'interceptor au client OkHttp avec
.addInterceptor(loggingInterceptor) - Cet outil est essentiel pour déboguer les problèmes d'API
GitHubApiInstrumentationTest.kt
Une fois qu'on a tout ça on peut appeler notre fonction.
Le plus simple pour s'assurer du bon fonctionnement est de faire un test automatique avec execute