HTTP 4 - cookies et Post
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
Nous allons voir 2 éléments:
- comment envoyer des données en POST avec une classe de transfert
- comment implanter les cookies pour relier 2 appels ensemble
Les cookies servent à relier plusieurs requêtes dans une session HTTP.
Nous allons donc voir comment enchaîner une inscription/connexion et un appel à l'accueil des tâches.
Le code de cette recette est disponible ici.
- SessionCookieJar.kt
- RetrofitInstance.kt
- KickMyBApi.kt
- RequeteInscription.kt
- RequeteConnexion.kt
- MainActivity.kt
- KickMyBApiInstrumentationTest.kt
On ajoute d'abord un cookie jar (un pot à cookies) pour que le client HTTP puisse stocker les cookies d'un appel à l'autre :
Au niveau de la configuration de Retrofit, on va ajouter la gestion des cookies.
Les points importants ici:
- on a ajouté un cookie jar (un pot à cookies) pour que le client HTTP puisse stocker les cookies d'un appel à l'autre
- on configure le client OkHttp avec le cookie jar
- on utilise à la fois ScalarsConverterFactory et GsonConverterFactory pour gérer différents types de réponses
Au niveau de l'API, nous allons définir les méthodes:
- inscription qui envoie en POST un objet RequeteInscription
- connexion qui envoie en POST un objet RequeteConnexion
- accueilTache qui récupère l'accueil (nécessite d'être connecté via cookie)
On aura besoin de cette classe pour envoyer une requête d'inscription :
De même pour la connexion :
Dans l'interface Compose, on va pouvoir tester les trois appels:
Points importants:
- Le bouton "Inscription" fait un POST avec un objet RequeteInscription
- Le bouton "Connexion" fait un POST avec un objet RequeteConnexion
- Le bouton "Accueil Tâches" fait un GET qui utilise automatiquement le cookie de session
- Les réponses sont affichées dans des Cards séparées grâce à un composant réutilisable
IMPORTANT il faut envoyer au moins une requête à https://kickmyb-server.onrender.com/ avant de rouler le test pour "réveiller" le serveur.
Le test illustre deux scénarios d'utilisation :
Ce qu'on observe ici :
- Test 1: Inscription puis accès à l'accueil
- On s'inscrit avec un email aléatoire pour éviter les conflits
- L'inscription nous connecte et crée un cookie de session
- L'appel à l'accueil fonctionne car le cookie jar retourne automatiquement le cookie
- Test 2: Connexion puis accès à l'accueil
- On crée d'abord un compte avec inscription
- On se connecte avec ce compte
- On peut ensuite accéder à l'accueil grâce au cookie de session obtenu lors de la connexion