Aller au contenu principal

HTTP 3 - liste d'objets

astuce

ATTENTION : L'outil principal de débogage pour les appels réseaux est le network inspector dans Android Studio.

  1. Cliquer sur Fichier / File ou le symbole ☰ en haut à gauche
  2. Choisir View / Tool Windows / AppInspection
  3. Dans la fenêtre AppInspection, choisir l'onglet Network Inspector
  4. Tu devrais voir apparaître les appels réseaux de ton application

Regarder la recette de base pour les étapes:

Dans cette recette, nous allons voir comment :

  • Récupérer une liste d'objets complexes depuis un service web.
  • L'afficher dans un RecyclerView.

Le code de cette recette est disponible ici.

Dans le package transfer, nous allons créer des classes pour facilement accéder aux données.

Si on récupères du JSON, on va avoir les correspondances suivantes:

  • si le JSON commence avec { on veut récupérer un objet et on aura besoin d'une classe. On aura un Call<Pipo> et il faudra définir une classe Pipo
  • si le JSON commence avec [ on veut récupérer une liste et on pourra directement utiliser List. On aura alors un Call<List<Xxxxx>>.
  • si le JSON commence par " on va avoir un Call<String>
  • si le JSON commence par une suite de chiffes on va avoir un Call<Long>
  • etc.

Premier exemple

Si on ouvre la page https://api.github.com/users/octocat

  • le JSON commence par { donc on va créer une classe Utilisateur
  • dans l'objet dans le JSON, on voit la clé "login", on ajoute dans la classe Utilisateur un champ login
  • il faut que le nom soit exactement le même pour que Retrofit / Gson puisse faire la correspondance
  • il est conseillé d'ajouter un champ à la fois et de tester le fonctionnement
Chargement...

Exemple 2

https://api.github.com/users/octocat/repos

  • on voit que le JSON classe avec [ donc on veut récupérer une liste d'objets.
  • on va donc récupérer une liste de Repo et on crée la classe Repo.
  • pour voir quels champs mettre dedans, on regarde le premier élément de la liste avec le premier {
  • pour la demo, on a ajouté le name et le id
Chargement...