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

WinDev Discussion :

API restfull avec authentification token Bearer [WD25]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 136
    Points : 36
    Points
    36
    Par défaut API restfull avec authentification token Bearer
    Bonjour,

    J'ai une API à interroger en récupérant tout d'abord un token de type Bearer.

    Après je lance une requête de type HTTPGET avec un paramètre de type JSON, afin d'avoir un résultat de type JSON.

    J'ai réussi à récupérer le token Bearer, et le souci est que je n'arrive pas à récupérer le résultat de la deuxième requête paramétrée en utilisant le même token récupéré.

    Le code est:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    //Envoi pour récupérer le token
     
    login est une httpRequête
    login.Méthode= httpPost
    login.URL = "http:……………………………../token"
    login.ContentType= "application/json"
    body est un JSON
    body.name= Btn_user
    body.password = Btn_pass
     
    login.Contenu = body..FORMATJSON
    Trace(body)
    // Exécution de la requête
    Token est une httpRéponse = HTTPEnvoie(login)
    jtoken est JSON = Token..Contenu
    Trace(jtoken)
     
    Mafonction est une httpRequête
    Mafonction.Méthode= httpGet
    Mafonction.URL= "http://...................................................................../fonction"
    Mafonction.ContentType= "application/json"
    Mafonction.Entête["Authorization"] = "Bearer "+JSONVersVariant(jtoken)
     
    Param_body est un JSON
    Param_body.attribut = Saisie_attribut
    Mafonction.Contenu= Param_body..FORMATJSON
    Trace(Param_body)
     
    // Exécution de la requête
    Mafonction_reponse est une httpRéponse = HTTPEnvoie(Mafonction)
    Fonction_resultat est JSON= Mafonction_reponse.Contenu
     
    Info(Fonction_resultat)
    Avez vous une idée sur la manière à suivre pour envoyer un paramètre de type JSON dans une requête HTTPGET.

    Merci.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    tu peux jeter un oeil ici pour voir si cela t'aide.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 762
    Points : 957
    Points
    957
    Par défaut
    As-tu regardé le contenu de Token..Contenu ?

    Si c’est du JSON, je doute que tu puisses faire ceci directement : jtoken = Token..Contenu.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 136
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    tu peux jeter un oeil ici pour voir si cela t'aide.

    Ami calmant, J.P
    Oui exactement c'était la référence sur laquelle j'ai travaillé.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 136
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par der§en Voir le message
    As-tu regardé le contenu de Token..Contenu ?

    Si c’est du JSON, je doute que tu puisses faire ceci directement : jtoken = Token..Contenu.
    la variable Token est une httpréponse, je récupére sa valeur via Token..contenu.

    j'ai même testé et déclaré jtoken comme variant ou une chaine. le token est bien récupéré,
    mon problème est dans la deuxième requête dans laquelle je passe un paramètre de type JSON d'un seul membre "attribut".
    mais apparemment ce paramètre n'est pas reconnu dans le résultat.
    l'API fonctionne et elle me retourne un résultat disant que:
    le paramètre attendu "attribut" n'existe pas.

    j'ai essayé les même étapes avec POSTMAN (Voir les deux captures), ça marche parfaitement et je reçois les données de la deuxième requête.
    Images attachées Images attachées   

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    es-tu sûr que tu dois faire un get avec contenu ?
    RFC 7231 thinks otherwise:
    A payload within a GET request message has no defined semantics; sending a payload body on a GET request might cause some existing implementations to reject the request.
    On peut passer des paramètres dans un get en les mettant à la fin de l'adresse url exemple :
    /surfreport/{beachId}?days=3&units=metric&time=1400


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    Comme le dit @jurassic pork, ta requête doit être du POST et non du GET. Dans une requête http de type GET, les paramètres sont passés dans l'URL.

    Que renvoi ta première requête ? Est-ce juste un token brut (11zz4e885d...) ou le token est-il renvoyé sous forme de json ({"token":"11zz4e885d...") ?

    A partir de là on peut commencer à t'aiguiller.
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 136
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    es-tu sûr que tu dois faire un get avec contenu ?


    On peut passer des paramètres dans un get en les mettant à la fin de l'adresse url exemple :

    Ami calmant, J.P
    Effectivement, j'ai trouvé l'astuce et je n'ai pas fait attention que les paramètres doivent être passés à la fin de l'URL.
    donc on ne doit pas utiliser contenu pour passer les paramètres de la requête.

    Merci à vous.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 136
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par philouZ Voir le message
    Bonjour,

    Comme le dit @jurassic pork, ta requête doit être du POST et non du GET. Dans une requête http de type GET, les paramètres sont passés dans l'URL.

    Que renvoi ta première requête ? Est-ce juste un token brut (11zz4e885d...) ou le token est-il renvoyé sous forme de json ({"token":"11zz4e885d...") ?

    A partir de là on peut commencer à t'aiguiller.
    ma première requête est un Token brut, et je vous remercie pour la remarque, j'ai réussi à récupérer le contenu de la deuxième requête en passant les paramètres dans l'URL.

    Problème résolu.

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

Discussions similaires

  1. Clef API avec authentification user mot de passe
    Par monoludo dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 28/06/2021, 18h23
  2. authentification API cURL avec cookie
    Par blobfish75 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 25/12/2019, 17h19
  3. Authentification avec la méthode bearer
    Par marcilles dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/04/2019, 22h39
  4. [PHP 5.6] API REST pour upload de fichier avec authentification sur nginx
    Par G-Orwell dans le forum Langage
    Réponses: 0
    Dernier message: 30/01/2018, 23h39
  5. Client restfull en php avec authentification token
    Par modujuuf dans le forum Services
    Réponses: 0
    Dernier message: 08/06/2016, 12h02

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