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 un signup et un appel à un accueil.
Le code de cette recette est disponible ici.
- RetrofitUtil.kt
- Service.kt
- SignupRequest.kt
- TestsHTTP.kt
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 a tranformé l'utilitaire en singleton pour s'assurer que ce sera
- toujours le même utilitaire
- avec le même client
- avec le même cookie jar.
Au niveau du service, nous allons modifier les signatures des méthodes:
- un appel de signup qui envoie en Post un objet
- un appel au home qui récupère une liste (qui sera vide pour un nouveau compte)
On aura besoin de cette classe pour envoyer une requête signup :
IMPORTANT il faut envoyer au moins une requête à https://kickmyb-server.onrender.com/ avant le rouler le test pour "réveiller" le serveur.
On va illustrer le fonctionnement avec 3 tests différents
- Un signup simple
- Un signup puis un appel à l'accueil
- Un appel à l'accueil sans signup préalable
Ce qu'on va observer ici:
- si on fait un signup, cela marche une fois, la deuxième fois le nom est déjà pris
- si on fait un signup puis un appel à l'accueil, cela fonctionne car le signup nous a connecté (on a récupéré un cookie), du coup le serveur sait qui on est à la requête 2
- si on appelle l'accueil sans signup, on n'est pas connecté, cela échoue.