|
Started by guev, May, 13 2022 12:34 AM - 10 replies |
| |
| | | |
|
| |
Registered member 77 messages |
|
Posted on May, 13 2022 - 12:34 AM |
Bonjour
Je suis un peu perdu et surtout novice avec les webservices.
Je dois utiliser des webservices pour un logiciel de fidélité. La doc est ici : https://qa.adelya.com/apiv1/index.jsp
Voici les identifiants : Identifiant API : API_YvesRocher_Gbh Mot de Passe : XJcqLM759pd5 APIKEYS : KEY-f6fde269-2753-4eba-8bf3-55928432c74a
Je n'arrive pas à me connecter. Je ne sais pas trop quelle syntaxe écrire. J'ai fait ceci mais ça ne fonctionne pas.
api_key est une chaîne UNICODE = "KEY-f6fde269-2753-4eba-8bf3-55928432c74a" h est un HTTPRequête h..Méthode = httpGet h..URL = "http://qa.adelya.com/apiv1/webapi.do" h..Utilisateur = "API_YvesRocher_Gbh" h..MotDePasse = "XJcqLM759pd5"
r est un restRéponse = RESTEnvoie(h)
SI r..CodeEtat = 200 ALORS MonJson est un JSON = r.Contenu Info(MonJson) SINON Erreur("Erreur") FIN
Quelqu'un peut-il m'aider ? Je vous remercie.
Hervé
-- Hervé |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 13 2022 - 4:41 AM |
Voici une doc supplémentaire : https://docs.google.com/document/d/1tje4bLnMhTJjxni4yyJt8j8kjEdBIa4KWYdxJj4pCC8/edit
J'ai modifié mon code comme ceci mais toujours une erreur :
h est un HTTPRequête h..Méthode = httpGet h..URL = "http://qa.adelya.com/apiv1/webapi.do" h..Entête["Authorization"] = Encode("KEY-f6fde269-2753-4eba-8bf3-55928432c74a" + ";" + "API_YvesRocher_Gbh" + ";" + "XJcqLM759pd5", encodeBASE64)
r est un restRéponse = RESTEnvoie(h)
SI r..CodeEtat = 200 ALORS MonJson est un JSON = r.Contenu Info(MonJson) SINON Erreur("Erreur") FIN
Il manque la mentions "Basic " dans le header HTTP, mais je ne sais pas où le placer. Merci à ceux qui veulent bien m'aider.
hervé
-- Hervé |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 13 2022 - 5:32 AM |
J'ai avancé un peu mais toujours une erreur.
Serveur, protocole, url_API est une chaîne requete est un HTTPRequête reponse est un httpRéponse vConstReq est un Variant vConstReqCompl est un Variant
Serveur = "qa.adelya.com" protocole = "https://" url_API = "/apiv1/webapi.do?"
sUsername est une chaîne = "API_YvesRocher_Gbh" sPassword est une chaîne = "XJcqLM759pd5" gsClAPI est une chaîne = "KEY-f6fde269-2753-4eba-8bf3-55928432c74a"
sBasiAuth est une chaîne = gsClAPI+";"+sUsername+":"+sPassword sBasiAuth = "Basic "+Encode(sBasiAuth, encodeBASE64)
vConstReqCompl.action = "show" vConstReq.FidelityMember.name = "DUPOND"
requete.URL = protocole + sErveur + url_API+"json_header="+VariantVersJSON(vConstReqCompl)+"&json_data="+VariantVersJSON(vConstReq)
requete.Méthode = httpGet requete.ContentType = typeMimeJSON requete.Entête [ "Accept" ] = "application/json" requete.Entête[ "Authorization" ] = sBasiAuth requete.IgnoreErreur = httpIgnoreCertificatExpiré + httpIgnoreCertificatInvalide + httpIgnoreNomCertificatInvalide + httpIgnoreRedirection + httpIgnoreRevocation
reponse = HTTPEnvoie( requete )
SI ErreurDétectée ALORS Erreur("ERREUR ----- " + ErreurInfo(errComplet)) SINON Info("REST REPONSE --------------- " + reponse..Contenu) FIN
Une idée ? Merci
Hervé
-- Hervé |
| |
| |
| | | |
|
| | |
| |
Registered member 10 messages Popularité : +1 (1 vote) |
|
Posted on May, 13 2022 - 8:57 AM |
Bonjour Hervé,
J'ai fait qques modifs, ca à l'air de répondre maintenant 
Dans la fonction Encode, il faut bien mettre "encodeBASE64SansRC" en paramètre sinon il y un RC dans l'encodage ! Il faut mettre le JSON des paramètres dans ..Contenu
Bonne journée.
Serveur, protocole, url_API est une chaîne requete est un HTTPRequête reponse est un httpRéponse vConstReq est un Variant vConstReqCompl est un Variant
Serveur = "qa.adelya.com" protocole = "https://" url_API = "/apiv1/webapi.do"
sUsername est une chaîne = "API_YvesRocher_Gbh" sPassword est une chaîne = "XJcqLM759pd5" gsClAPI est une chaîne = "KEY-f6fde269-2753-4eba-8bf3-55928432c74a"
sBasiAuth est une chaîne = gsClAPI+";"+sUsername+":"+sPassword sBasiAuth = "Basic "+Encode(sBasiAuth, encodeBASE64SansRC)
vConstReqCompl.action = "show" vConstReq.FidelityMember.name = "DUPOND"
requete..URL = protocole + Serveur + url_API requete..Méthode = httpPost requete..ContentType = "application/json" requete..Entête["Accept"] = "application/json" requete..Entête["Authorization"] = sBasiAuth requete..IgnoreErreur = httpIgnoreCertificatExpiré + httpIgnoreCertificatInvalide + httpIgnoreNomCertificatInvalide + httpIgnoreRedirection + httpIgnoreRevocation
requete.Contenu = [ json_header={action:"show"}&json_data={FidelityMember:{name:"DUPOND"}} ]
reponse = HTTPEnvoie(requete)
SI ErreurDétectée ALORS Erreur("ERREUR ----- " + ErreurInfo(errComplet)) SINON Info("REST REPONSE :" + RC + reponse.Contenu) FIN |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 14 2022 - 9:06 PM |
Merci je regarde ça des lundi.
-- HervéMessage modified, May, 14 2022 - 9:17 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 16 2022 - 6:52 AM |
Bonjour
En effet l'erreur ne s'affiche plus ce qui est déjà bien. Je me bat en ce moment pour récupérer des données. J'ai toujours une erreur 3007.
Merci Hervé
-- Hervé |
| |
| |
| | | |
|
| | |
| |
Registered member 10 messages Popularité : +1 (1 vote) |
|
Posted on May, 16 2022 - 9:20 AM |
Bonjour,
Il y a le même retour (3007) avec une requête en curl, cela ne vient plus de windev. Le nom "dupont" existe dans votre base ? |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 16 2022 - 10:14 PM |
Bonjour
Je viens d'avoir les données contenu dans la base de test. Il y a un seul enregistrement.
{ "FidelityMember":{ "id":"22", "dateUpdate":"2022-05-13 09:02:13", "idExternals":"", "uniqueId":"1a279800-8c07-4f05-ad20-84dd5e89de50", "uid":"", "defaultLanguage":"FR", "cardnumber":"", "type":"C", "src":"C", "gender":"", "name":"CAZALS", "secondName":"", "firstname":"Charlotte", "login":"1707117086", "passwordDateUpdate":"2022-05-11 14:40:01", "job":"", "webSite":"", "maritalState":"", "mobile":"", "carrier":"", "nbPoint":"0", "cumulPoint":"0", "nbCredit":"0.0", "cumulCredit":"0.0", "cumulCA":"0.0", "montantCA":"0.0", "email":"charlotte.cazals@adelya.com", "tel":"", "tel2":"", "smsoptin":false, "smsOptinStatus":"0", "emailoptin":false, "emailOptinStatus":"0", "mailoptin":false, "mailOptinStatus":"0", "teloptin":false, "telOptinStatus":"0", "partneroptin":false, "partnerOptinStatus":"0", "sponsored":false, "actif":"1", "npei":"0", "npmi":"0", "netPrice":"0.0", "dateCreate":"2022-05-11 14:40:01", "children":"", "linkedObjects":"", "address":{ "id":"22", "country":"RE", "geocodingStatus":"0", "line1":"Apt A04 La cours des Près", "line2":"", "npai":false, "qualityStatus":"-1", "region":"", "rnvpStatus":"0", "streetNumber":"", "streetType":"12 Rue Simone Boudet, Apt A04 La cours des Près", "town":"", "zip":"" }, "criteria":{ "id":"22" }, "group":{ "id":"28420", "uniqueId":"G-2a97f9b1-d707-446e-9bd8-f139680ea809", "codeGroup":"GBHYvesRocher", "salesDescr":"Yves Rocher Réunion", "descrGroup":"Yves Rocher Réunion" }, "globalGroup":"28420", "fidProgramCode":"", "user":"153433" } }
Je n'ai pas encore trouvé la solution. Merci
Hervé
-- Hervé |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 17 2022 - 2:48 AM |
Bonjour
J'ai réussi avec ce code :
Serveur, protocole, url_API est une chaîne requete est un HTTPRequête reponse est un httpRéponse vConstReq est un Variant vConstReqCompl est un Variant
Serveur = "qa.adelya.com" protocole = "https://" url_API = "/apiv1/webapi.do?"
sUsername est une chaîne = "API_YvesRocher_Gbh" sPassword est une chaîne = "XJcqLM759pd5" gsClAPI est une chaîne = "KEY-f6fde269-2753-4eba-8bf3-55928432c74a"
sBasiAuth est une chaîne = gsClAPI+";"+sUsername+":"+sPassword sBasiAuth = "Basic "+Encode(sBasiAuth, encodeBASE64SansRC)
vConstReqCompl.action = "show" vConstReq.FidelityMember.id = "23"
requete..URL = protocole + Serveur + url_API + "json_data="+Remplace(VariantVersJSON(vConstReq,psdMinifié),Caract(34),"'")
requete..Méthode = httpPut requete..ContentType = "application/json" requete..Entête["Accept"] = "application/json" requete..Entête["Authorization"] = sBasiAuth requete..IgnoreErreur = httpIgnoreCertificatExpiré + httpIgnoreCertificatInvalide + httpIgnoreNomCertificatInvalide + httpIgnoreRedirection + httpIgnoreRevocation
reponse = HTTPEnvoie(requete)
SI ErreurDétectée ALORS Erreur("ERREUR ----- " + ErreurInfo(errComplet)) SINON Info("REST REPONSE :" + RC + reponse.Contenu) FIN
Il y a peut-être mieux pour optimiser le code. Avez-vous des suggestions ?
En tout cas merci
hervé
-- Hervé |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 17 2022 - 3:01 AM |
Un problème tout de même si je met un "é" à Hervé dans la chaine firstname. Surement un problème d'encodage.
Hervé
-- Hervé |
| |
| |
| | | |
|
| | |
| |
Registered member 77 messages |
|
Posted on May, 17 2022 - 3:05 AM |
La solution :
URLEncode(protocole + Serveur + url_API + "json_data="+Remplace(VariantVersJSON(vConstReq,psdMinifié),Caract(34),"'"),encodeURLDepuisAnsi)
Hervé
-- Hervé |
| |
| |
| | | |
|
| | | | |
| | |
|