IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Pascal Discussion :

Interroger un web service JSON


Sujet :

Contribuez Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 167
    Billets dans le blog
    9
    Par défaut Interroger un web service JSON
    Bonjour !

    Je vous propose d'apprendre à interroger un web service JSON et à analyser les données reçues.

    Le web service que j'ai choisi pour cet exemple fournit des informations sur le calendrier liturgique catholique. La documentation de l'API se trouve à l'adresse suivante :

    http://calapi.inadiutorium.cz/api-doc

    Je souhaite consulter la date du jour dans le calendrier. Voici comment interroger le web service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    uses
      fphttpclient;
     
    const
      URL = 'http://calapi.inadiutorium.cz/api/v0/fr/calendars/general-fr/today';
     
    var
      vJSONText: string;
     
    begin
      vJSONText := TFPCustomHTTPClient.SimpleGet(URL);
    Afin de bien comprendre ce qui se passe (et afin de pouvoir éventuellement travailler sans connexion), je colle directement dans mon code la chaîne de caractères renvoyée précédemment par la méthode SimpleGet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      vJSONText := '{"date":"2018-04-01","season":"easter","season_week":1,"celebrations":[{"title":"Dimanche de Pâques de la Résurrection du Seigneur","colour":"white","rank":"Triduum Pascal","rank_num":1.1}],"weekday":"sunday"}';
    Voici comment convertir cette chaîne de caractères en données JSON sous la forme du type TJSONData :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    uses
      fpjson, jsonparser;
     
    { ... }
     
    var
      { ... }
      vJSONData: TJSONData;
     
    begin
      { ... }
     
      vJSONData := GetJSON(vJSONText);
    Le premier avantage de cette conversion est de pouvoir reformater la chaîne de caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      WriteLn(vJSONData.FormatJSON());
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    {
      "date" : "2018-04-01",
      "season" : "easter",
      "season_week" : 1,
      "celebrations" : [
        {
          "title" : "Dimanche de Pâques de la Résurrection du Seigneur",
          "colour" : "white",
          "rank" : "Triduum Pascal",
          "rank_num" : 1.1000000000000001E+000
        }
      ],
      "weekday" : "sunday"
    }

    Le principal avantage est de pouvoir accéder à la donnée de son choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      WriteLn(vJSONData.FindPath('celebrations').Items[0].FindPath('title').AsString);
    Non seulement ça fonctionne, mais à présent les accents s'affichent correctement (dans la console de Notepad++).

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    Dimanche de Pâques de la Résurrection du Seigneur

    Comme vous le voyez, on accède à une table associative ({}) par la méthode FindPath, et on accède à un tableau ([]) par la variable Items.

    Vous trouverez ci-joint le code source complet de l'exemple.

    Joyeuses Pâques !
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Interroger un web service
    Par wisiweb dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/12/2013, 18h26
  2. [Web Service] Web service JSON inaccessible depuis domaine distant
    Par flashnet dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/02/2013, 00h31
  3. [1.x] web services json
    Par Willy55 dans le forum Symfony
    Réponses: 10
    Dernier message: 16/05/2012, 15h48
  4. Comment interroger un Web Service en PL/SQL
    Par squallJ dans le forum Oracle
    Réponses: 2
    Dernier message: 19/08/2009, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo