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

WebDev Discussion :

Recuperer des valeurs d'une httpRéponse [WB25]


Sujet :

WebDev

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 72
    Points
    72
    Par défaut Recuperer des valeurs d'une httpRéponse
    Bonjour à Toutes et à Tous

    j'utilise une API dans mon application web et tout marche bien.
    Lorsque j'exécute ma requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ASACI_Reponse,ASACI_ReponseInfos sont des JSON
    ReponseAttendue est un httpRéponse	= HTTPEnvoie(Demande_Attestation)
    SI ErreurDétectée ALORS
    	Error(ErrorInfo(errComplet))
    SINON
    	ASACI_Reponse = ReponseAttendue..Contenu
    	ASACI_ReponseInfos = ASACI_Reponse
    FIN
    voici la réponse (au format JSON) que j'obtiens dans un champ libellé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    {
        "statut": "0",
        "numero_demande": 482320240312154416,
        "infos": [
            {
                "numero_attestation": "ATD-9230278052",
                "numero_immatriculation": "YUFGVVGFHHJBVGHJF454",
                "numero_chassis": "NA",
                "date_effet": "2024-03-12",
                "date_echeance": "2024-04-11",
                "lien_pdf": "http://asacitest.ldfgroupe.com:8080/asaciMetier/#/consulter_attestations?numero=ATD-9230278052&demandeur=3278999487316&type=1",
                "lien_image": "http://asacitest.ldfgroupe.com:8080/asaciMetier/#/consulter_attestations?numero=ATD-9230278052&demandeur=3278999487316&type=2",
                "lien_qrcode": "http://asacitest.ldfgroupe.com:8080/asaciMetier/#/consulter_attestations?numero=ATD-9230278052&demandeur=3278999487316&type=3"
            }
        ]
    }
    Mon problème est le suivant:
    j'aimerais récupérer la valeur de "numero_attestation" et celle de "lien_pdf" mais je n'arrive pas car ils sont situés dans le second membre de la réponse c'est-à-dire des sous-rubriques du tableau "Infos".
    ca me fait 5 jour de tâtonnements et je ne sais plus comment procéder.
    J'ai vraiment besoin de votre aide ou de vos conseils
    Merci

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    De mémoire, car ça fait 3 ans que je n'ai pas trituré de JSON, il faut que tu passes par un variant avec un JSONVersVariant, construire une "arborescence" correspondant à la structure du JSAON et teste la valeur

    Et en regardant la doc, tu n'aurais pas perdu 5 jours... Le deuxième exemple (test du NULL) est ce qui t'intéresse. Certes, il faut l'adapter...

    RTFM comme dirait voroltinquo...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Bonjour,

    De mémoire, car ça fait 3 ans que je n'ai pas trituré de JSON, il faut que tu passes par un variant avec un JSONVersVariant, construire une "arborescence" correspondant à la structure du JSAON et teste la valeur

    Et en regardant la doc, tu n'aurais pas perdu 5 jours... Le deuxième exemple (test du NULL) est ce qui t'intéresse. Certes, il faut l'adapter...

    RTFM comme dirait voroltinquo...
    Merci pour ce tuyau, j'avait utilisé le type variant une seule fois il y a deux ans de cela.
    Je crois que je vais utiliser les types variant ou membrevariant et parcourir ma reponse

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Si tu arrives à exploiter les JSON sans utiliser les variants, je veux bien que tu me fasses une démo...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 810
    Points : 5 269
    Points
    5 269
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    La solution la plus portable (car elle n'utilise pas les variants) est la désérialisation.
    Les structures concernées sont les suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    STinfos est une structure
    	numero_attestation est une chaîne
    	numero_immatriculation est une chaîne
    	numero_chassis est une chaîne
    	date_effet est une chaîne
    	date_echeance est une chaîne
    	lien_pdf est une chaîne
    	lien_image est une chaîne
    	lien_qrcode est une chaîne
    FIN
     
    STResult est une structure
    	statut est une chaîne
    	numero_demande est un numérique
    	infos est un tableau de STinfos
    FIN
    Ce qui nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    stRéponse est STResult
    stInformation est STInfo
    ReponseAttendue est un httpRéponse	= HTTPEnvoie(Demande_Attestation)
     
    SI ErreurDétectée ALORS
    	Error(ErrorInfo(errComplet))
    SINON
    	Déserialise(stRéponse,ReponseAttendue..Contenu)
    	ASACI_ReponseInfos = ASACI_Reponse
    FIN
     
    POUR TOUT stInformation de stRéponse.Infos
    	TraceConstruit("N° attestation %1%2Lien PDF %3",stInformation.Numero_attestation,CRLF,stInformation.lien_PDF)
    FIN
    Pour plus d'infos sur l'exploitation du résultat d'une API via la désérialisation il y a un billet sur le blog
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Bonjour,
    La solution la plus portable (car elle n'utilise pas les variants) est la désérialisation.
    Les structures concernées sont les suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    STinfos est une structure
    	numero_attestation est une chaîne
    	numero_immatriculation est une chaîne
    	numero_chassis est une chaîne
    	date_effet est une chaîne
    	date_echeance est une chaîne
    	lien_pdf est une chaîne
    	lien_image est une chaîne
    	lien_qrcode est une chaîne
    FIN
     
    STResult est une structure
    	statut est une chaîne
    	numero_demande est un numérique
    	infos est un tableau de STinfos
    FIN
    Ce qui nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    stRéponse est STResult
    stInformation est STInfo
    ReponseAttendue est un httpRéponse	= HTTPEnvoie(Demande_Attestation)
     
    SI ErreurDétectée ALORS
    	Error(ErrorInfo(errComplet))
    SINON
    	Déserialise(stRéponse,ReponseAttendue..Contenu)
    	ASACI_ReponseInfos = ASACI_Reponse
    FIN
     
    POUR TOUT stInformation de stRéponse.Infos
    	TraceConstruit("N° attestation %1%2Lien PDF %3",stInformation.Numero_attestation,CRLF,stInformation.lien_PDF)
    FIN
    Pour plus d'infos sur l'exploitation du résultat d'une API via la désérialisation il y a un billet sur le blog
    Merci pour ce tuyau, je vais explorer cette piste

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Si tu arrives à exploiter les JSON sans utiliser les variants, je veux bien que tu me fasses une démo...
    Merci infiniment pour ton aide. voici comment j'ai procédé finalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Déclaration des variables globales
    statut, numeroDemande, NumeroAttestation, LienPDF sont des chaînes
    joResponse est un JSON
    JoInfo est un JSON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Envoi de la requête
    ReponseAttendue	est un httpRéponse = HTTPEnvoie(Demande_Attestation)
     
    // Récupération du contenu de la réponse
    joResponse = ReponseAttendue..Contenu
    // Récupérer le statut
    statut = joResponse.statut
    // Récupérer le numéro de demande
    numeroDemande = joResponse.numero_demande
    JoInfo = joResponse.infos[1]
    // Récupérer le numéro d'attestation
    NumeroAttestation = JoInfo.numero_attestation
    // Récupérer le lien PDF
    LienPDF = JoInfo.lien_pdf
    et je récupère les éléments avec succès.

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2021
    Messages : 138
    Points : 72
    Points
    72
    Par défaut
    Merci à tous le problème était lié à une mauvaise déclaration de la variable qui récupère le contenu de la réponse.
    J'ai utilisé un buffer et ca marche bien

    Voici mon code final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ASACI_Body = ChaîneVersJSON(ASACI_Body)
    // Affectation du body au contenu de la requête
    Demande_Attestation..Contenu = ASACI_Body
     
    Demande_Attestation..DuréeNonRéponse = 120000
    // Envoi de la requête
    ReponseAttendue est un httpRéponse = HTTPEnvoie(Demande_Attestation)
    bufContenu est un buffer = ReponseAttendue..Contenu
    joResponse est un JSON= bufContenu
    statut est une chaine= joResponse.statut
     
    RENVOYER(statut,sDescriptionStatut)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher la réponse d'une API rest dans ma template
    Par Swinolani dans le forum Angular
    Réponses: 5
    Dernier message: 31/03/2023, 19h06
  2. [LeafLet] Intégrer la réponse d'une API dans une popup
    Par falcon900 dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 04/01/2022, 16h53
  3. Attendre la réponse d'une boite de dialogue ??
    Par Ben_Le_Cool dans le forum Delphi
    Réponses: 16
    Dernier message: 15/12/2006, 20h41
  4. Analyse de code HTML en réponse a une requête post.
    Par ghost942 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/06/2005, 21h40
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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