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 REST avec Token


Sujet :

WinDev

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2011
    Messages : 22
    Points : 3
    Points
    3
    Par défaut API REST avec Token
    Bonjour,

    Je suis à la recherche d'un peu d'aide sur les API et surtout leurs paramètres car je pense que c'est ici que ce situe mon problème.
    Je bloque avec un API UPS , j'ai réussi à la faire fonctionner dans Postman et sur le site d'UPS, pas avec WDTestRest ni en windev , elle me renvoie toujours erreur 404 sans plus de détails et là je sèche.


    voici mon code:
    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
    			monHttp est une chaîne
     
    			monHttp="https://wwwcie.ups.com/api/Rating/"
     
     
    			VariableRAZ(oRequête)
    			VariableRAZ(oRéponse)
    			oRequête..URL						= monHttp
    			oRequête..Méthode					= httpPost				
    			oRequête..AuthToken	= MonToken
    			oRequête..Entête["Authorization"]="Bearer "+sMonToken
     
    			// Type du formulaire
     
    			oRequête..ContentType				= "application/json"
    			oRequête..Contenu=rr
     
    			// Génération du formulaire
    			HTTPCréeFormulaire("FormData")
    			HTTPAjouteParamètre("FormData", "version", "v2403")
    			HTTPAjouteParamètre("FormData", "requestoption", "Rate")
    			HTTPAjouteParamètre("FormData", "transId", "")
    			HTTPAjouteParamètre("FormData", "transactionSrc", "")
    			// Exécute la requête et récupère la réponse
    			oRéponse = HTTPEnvoieFormulaire("FormData", oRequête)
    			//oRéponse = HTTPEnvoie(oRequête)
    			SI ErreurDétectée ALORS ....

    // ici le site Postman
    Nom : postman.JPG
Affichages : 180
Taille : 91,6 Ko

    Merci de votre aide.

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 346
    Points : 3 867
    Points
    3 867
    Par défaut
    Bonjour,

    Cela ne serait pas dû au fait que "v2403/Rate" ne se trouve pas dans l'URL comme sur postman ?

    Ensuite pour le reste, ce que je fais de mon côté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    vJSON est un JSON
    vJSON.transID=""
    ...
    oRequête..Contenu = vJSON
    oRéponse = RESTEnvoie(oRequête)
    Pas besoin de passer par un formulaire.

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2011
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai essayé également c'est toujours pareil, je crois que c'est mon Token qui expire avant même d'avoir pu l'utiliser.

    Avez vous déjà été confronté à cela ?

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 346
    Points : 3 867
    Points
    3 867
    Par défaut
    Si vous avez une erreur 404, je pense que le problème provient de l'URL car sinon vous devriez avoir un message d'erreur plus explicite à mon avis.

    Comment est généré le token ? via un autre appel ?

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 349
    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 349
    Points : 9 504
    Points
    9 504
    Par défaut
    Bonjour,

    Suite à la réponse de Lo², tu as bien modifié tout ton code en partant d'une variable de type restRequête ? cf doc

    Question subsidiaire : En quelle version de Windev es tu ?

  6. #6
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2011
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Merci à tous les 2

    Je suis en version 26

    pour mon Token ça fonctionne sauf peut-être qu'il n'est déjà plus actif mais mon code ci-dessous étant collé je ne comprends pas

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    oRequête	est un httpRequête
    oRéponse	est une httpRéponse
     
    oRequête..URL			= "https://wwwcie.ups.com/security/v1/oauth/token"
    oRequête..Méthode		= httpPost
     
    oRequête..Utilisateur	= "UeuNgqIQACWxxatAjBQYFCuha92IMdF62w0ZXSCcsfqnAJ6B"
    oRequête..MotDePasse	= "pG5PGfulurLs8nqgNGaFfJSh9JgkvIFHyAASiVUDFvKfEM7Rj20YYCrC4nJYyRlJ"
     
    // Type du formulaire
    oRequête..ContentType	= "application/x-www-form-urlencoded"
    oRequête..Contenu		= ""
     
    // Génération du formulaire
    HTTPCréeFormulaire("FormData")
    HTTPAjouteParamètre("FormData", "grant_type", ChaîneVersUTF8("client_credentials"))
     
    // Exécute la requête et récupère la réponse
    oRéponse = HTTPEnvoieFormulaire("FormData", oRequête)
     
     
     
    oAuth2Param est un OAuth2Paramètres
    oAuth2Param.ClientID		= client_id
    oAuth2Param.ClientSecret	= clé_secrete
    oAuth2Param.URLAuth			= "https://wwwcie.ups.com/security/v1/oauth/authorize"
    oAuth2Param.URLToken		= "https://wwwcie.ups.com/security/v1/oauth/token"
     
    // Initialise le token avec le JSON
    MonToken est un AuthToken(oAuth2Param, oRéponse.Contenu)
    monHttp est une chaîne
    SI EnModeTest() ALORS
    	monHttp="https://wwwcie.ups.com/api/Rating/v2403/rate?"
    SINON
    	monHttp="https://onlinetools.ups.com/api/Rating/v2403/rate?"
    FIN
     
    //monHttp+="v2403/Rate?transId= &transcriptionScr="
    VariableRAZ(oRequête)
    VariableRAZ(oRéponse)
    oRequête..URL						= monHttp
    oRequête..Méthode					= httpPost				
    oRequête..AuthToken				= MonToken
    oRequête..Entête["Authorization"]	= "Bearer "+MonToken.Valeur
    oRequête..Entête["transId"]			= ""
    oRequête..Entête["transactionSrc"]	= "testing"
     
    // Type du formulaire
    oRequête..ContentType				= "application/json"
    oRequête..Contenu					= rr
     
    // Exécute la requête et récupère la réponse
    oRéponse = RESTEnvoie(oRequête)
     
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errComplet))
    SINON
    	Info(oRéponse..CodeEtat)
    	Info(oRéponse..Contenu)
    	SELON oRéponse..CodeEtat
    		CAS 200
    			Info("ok")
    		AUTRE CAS
    			Info(oRéponse..CodeEtat)
    			Erreur(ErreurInfo(errComplet))	
    	FIN			
    FIN

  7. #7
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 349
    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 349
    Points : 9 504
    Points
    9 504
    Par défaut
    Bonjour,

    Un conseil : utilise les balises de code (petit bouton dièse)
    Un deuxième conseil : essaye de typer le nom de tes variables. Ex : MonHttp pourrait être sMonHTTP (type chaîne), oRequete pourrait être RestReq_Requete (type RestRequete). C'est plus long à écrire... et encore avec le complétion auto, ce n'ai plus tout à fait vrai. Mais surtout, quand tu reviens sur ton code après un certain délai, ça fait gagner beaucoup de temps.

    Pour essayer de répondre à ton souci : tu fais un appel restEnvoie avec une variable de type HttpRequête. Il faut qu'elle soit de type restRequête.

  8. #8
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2011
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci pour votre retour et ces conseils.


    J'ai bien remplacé par un restrequete mais j'ai toujours le même problème.

    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
    35
    36
    RestReq_Requête	est un restRequête
    RestReq_Reponse	est un restRéponse
     
    sMonHttp est une chaîne
    SI EnModeTest() ALORS
    	sMonHttp="https://wwwcie.ups.com/api/Rating/v2403/rate?"
    SINON
    	sMonHttp="https://onlinetools.ups.com/api/Rating/v2403/rate?"
    FIN
    RestReq_Requête..URL						= sMonHttp
    RestReq_Requête..Méthode					= httpPost				
    RestReq_Requête..AuthToken					= MonToken
    RestReq_Requête..Entête["Authorization"]	= "Bearer "+MonToken.Valeur
    RestReq_Requête..Entête["transId"]			= ""
    RestReq_Requête..Entête["transactionSrc"]	= "testing"
     
    // Type du formulaire
    RestReq_Requête..ContentType				= "application/json"
    RestReq_Requête..Contenu					= rr
     
    // Exécute la requête et récupère la réponse
    RestReq_Reponse = RESTEnvoie(RestReq_Requête)
     
    SI ErreurDétectée ALORS
    	Erreur(ErreurInfo(errComplet))
    SINON
    	Info(RestReq_Reponse..CodeEtat)
    	Info(RestReq_Reponse..Contenu)
    	SELON RestReq_Reponse..CodeEtat
    		CAS 200
    			Info("ok")
    		AUTRE CAS
    			Info(RestReq_Reponse..CodeEtat)
    			Erreur(ErreurInfo(errComplet))	
    	FIN			
    FIN

  9. #9
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 349
    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 349
    Points : 9 504
    Points
    9 504
    Par défaut
    Ne pouvant pas tester chez moi, j'ai 2 questions :
    1. Le message d'erreur est toujours un 404 ?
    2. Le contenu ta variable RestRequête = rr. Ca ressemble peu ou prou à ce que t'avait donné le Postman (partie data) ?

Discussions similaires

  1. Paypal Express Checkout API REST avec SDK PHP
    Par Soundboy39 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 09/07/2018, 09h07
  2. fonctionnement API-REST avec PHP
    Par missmatt1987 dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2016, 19h36
  3. API REST avec Android
    Par Heartlessmdh dans le forum Android
    Réponses: 1
    Dernier message: 22/04/2015, 15h06
  4. Intégration API RestFul avec un Jetty Server
    Par jessyJ dans le forum Services Web
    Réponses: 0
    Dernier message: 29/06/2014, 20h22
  5. API rest avec oAuth2
    Par jm54_ dans le forum Django
    Réponses: 10
    Dernier message: 26/11/2013, 11h42

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