PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Webservices Adelya
Webservices Adelya
Started by guev, May, 13 2022 12:34 AM - 11 replies
Registered member
79 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
79 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
79 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)

//Construction de la requete
vConstReqCompl.action = "show"
vConstReq.FidelityMember.name = "DUPOND"


//AVEC requete
requete.URL = protocole + sErveur + url_API+"json_header="+VariantVersJSON(vConstReqCompl)+"&json_data="+VariantVersJSON(vConstReq)
//requete.URL = "https://qa.adelya.com/apiv1/webapi.do?json_header={action:'show'}&json_data={FidelityMember:{name:'DUPOND'}}"
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)


//Construction de la requete
vConstReqCompl.action = "show"
vConstReq.FidelityMember.name = "DUPOND"


//AVEC requete
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
79 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
79 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
79 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
79 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)

//Construction de la requete
vConstReqCompl.action = "show"
vConstReq.FidelityMember.id = "23"
//vConstReq.FidelityMember.name = "Truc"
//vConstReq.FidelityMember.firstname = "Toto"
//vConstReq.FidelityMember.actif = "1"

//AVEC requete
requete..URL = protocole + Serveur + url_API + "json_data="+Remplace(VariantVersJSON(vConstReq,psdMinifié),Caract(34),"'")
//requete..URL = protocole + Serveur + url_API + "json_data={'FidelityMember':{'id':'23'}}"
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

//"json_header="+VariantVersJSON(vConstReqCompl)+"&json_data="+VariantVersJSON(vConstReq)

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
79 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
79 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é
Registered member
5 messages
Posted on August, 05 2022 - 12:02 PM
Vous avez pu réussir tout ce que vous vouliez avec l'API ?

voici le code de ma procédure d'envoi de requête si cela peut vous aider :

// Résumé :
// Syntaxe :
//[ = ] pg_FidAdelya_Envoi_RequêteHTTP ( [ est Fidelite_Adelya.gc_enum_Methodes_FidRoady [, est JSON [, est chaîne]]])
//
// Paramètres :
// pp_MethodeHTTP (Fidelite_Adelya.gc_enum_Methodes_FidRoady) :
// pp_json_CriteresRequete (JSON - valeur par défaut="") :
// pp_chn_ChampsArecuperer (chaîne ANSI - valeur par défaut="") :
// Valeur de retour :
// gc_str_Reponse_FidRoady : // Aucune
//
// Exemple :
// Indiquez ici un exemple d'utilisation.
//
// pp_str_Retour (gc_str_Retour) :
// pp_tab_Parametres (tableau associatif - valeur par défaut="") : >
// pp_boo_TestServeur (booléen - valeur par défaut=0) :
PROCÉDURE pg_FidAdelya_Envoi_RequêteHTTP(pp_MethodeHTTP est une gc_enum_Methodes_FidRoady = Http_Get, pp_json_CriteresRequete est un JSON = "", pp_chn_ChampsArecuperer est une chaîne = "") : gc_str_Reponse_FidRoady
// Envoi une requête HTTP à Adelya
// pp_boo_TestServeur = booléen qui sert à vérifier que le serveur répond // Inutilisé
// pp_MethodeHTTP = type de requête (http_Get, http_Put) surchargé à la propriété native pour pouvoir les passer en paramètre sans passer des entiers pour plus de clarté
v_chn_CriteresRequete est une chaîne
v_http_Reponse est une httpRéponse // Résultat de la requête HTTP
v_str_ReponseRequete est un gc_str_Reponse_FidRoady // Résultat de la requête Vraie si erreur + Message d'erreur sinon Faux et contenu renvoyé
v_str_ReponseRequete.boo_Erreur = Vrai // Erreur à vrai par défaut
v_json_ResultatAPI est un JSON // Résultat de la requête au format JSON
v_chn_ErreurMessage est une chaîne // Message d'erreur Adelya
v_chn_ErreurCode est une chaîne // Code erreur Adelya
v_http_Requete est un httpRequête // Requête
v_boo_ErreurAPI est un booléen // Si erreur détectée au niveau de l'API
v_chn_ReqLog est une chaîne = JSONVersChaîne(pp_json_CriteresRequete, psdMinifié)
v_boo_RetourMail est un booléen
v_chn_TexteMail est une chaîne = "Bonjour, une Erreur de TimeOut est survenue lors d'une requête de fidélité sur le Pdv %1 à %2" +RC
v_chn_TexteMail += RC + "Voici le contenu de la requête : "
v_chn_TexteMail += RC + "%3" +RC
v_chn_TexteMail += RC + "Le TimeOut est fixé a %4 secondes"
v_chn_TexteMail += RC + "Type de requête : %5"
v_chn_LibMethode est une chaîne

SI gp_boo_ProxyClient ALORS
Proxy("")
FIN

SI gc_chn_CleStime <> "" ALORS
// Entête clé de sécurité STIME
v_http_Requete.Entête["KeyId"] = gc_chn_CleStime
FIN

// Construction de l'entête d'authentification Basic + APIKEY + ; + USER + : + MDP et encodage en base64
v_chn_authAPI est une chaîne = gc_chn_Apikey_FidAdelya + ";" + gc_chn_User_FidAdelya + ":" + gc_chn_Password_FidAdelya
v_http_Requete.Entête["Authorization"] = "Basic " + Encode(v_chn_authAPI, encodeBASE64)
// Suppression des RC que Windev génère ... pour raison inconnue, peut-être à cause de l'encodage base 64.
v_http_Requete.Entête["Authorization"] = Remplace(v_http_Requete.Entête["Authorization"], RC, "")
// Méthode
v_http_Requete.Méthode = pp_MethodeHTTP
v_http_Requete.IgnoreErreur = httpIgnoreCertificatInvalide+httpIgnoreNomCertificatInvalide+httpIgnoreCertificatExpiré+httpIgnoreRenvoiHTTP+httpIgnoreRenvoiHTTPS+httpIgnoreRévocation
// URL
v_http_Requete.URL = gc_chn_Url_FidAdelya

// Timeout
SI gc_int_TimeOut = 0 ALORS
v_http_Requete.DuréeNonRéponse = 20000
SINON
v_http_Requete.DuréeNonRéponse = gc_int_TimeOut * 1000
FIN

// Converti en JSON la requête avec encodage base utf8
SI SansEspace(pp_json_CriteresRequete) <> "" ALORS
v_chn_CriteresRequete = pp_json_CriteresRequete
v_chn_CriteresRequete = Remplace(v_chn_CriteresRequete, "%", "pourcent")

// Suppression des & sinon la requête HTTP plante car elle compte un paramètre en trop
v_chn_CriteresRequete = Remplace(v_chn_CriteresRequete, "&", "et")
v_chn_CriteresRequete = ChaîneVersJSON(v_chn_CriteresRequete)

SI v_http_Requete.Méthode <> httpPut ALORS
v_chn_LibMethode = "Récupération de données"
v_chn_CriteresRequete = URLEncode(v_chn_CriteresRequete, encodeURLDepuisUTF8)
v_chn_CriteresRequete = "json_data=" + v_chn_CriteresRequete

SI pp_chn_ChampsArecuperer <> "" ALORS
// Suppression des & sinon la requête HTTP plante car elle compte un paramètre en trop
pp_chn_ChampsArecuperer = Remplace(pp_chn_ChampsArecuperer, "&", "et")
pp_chn_ChampsArecuperer = URLEncode(pp_chn_ChampsArecuperer, encodeURLDepuisUTF8)
pp_chn_ChampsArecuperer = "&fields=" + pp_chn_ChampsArecuperer
FIN

v_http_Requete.URL += "?" + v_chn_CriteresRequete + pp_chn_ChampsArecuperer

SI SansEspace(gc_chn_ListeParamSupplementaire) <> "" _ET_ gc_chn_ListeParamSupplementaire[1] = "&" ALORS
v_http_Requete.URL += gc_chn_ListeParamSupplementaire
FIN
SINON
v_chn_LibMethode = "Création ou modification de données"
// ContentType
v_http_Requete.ContentType = "application/x-www-form-urlencoded"
v_http_Requete.Contenu = URLEncode(v_chn_CriteresRequete, encodeURLDepuisUTF8)
v_http_Requete.Contenu = "json_data=" + v_http_Requete.Contenu

SI SansEspace(gc_chn_ListeParamSupplementaire) <> "" _ET_ gc_chn_ListeParamSupplementaire[1] = "&" ALORS
v_http_Requete.URL += "?" + Milieu(gc_chn_ListeParamSupplementaire, 2, Taille(gc_chn_ListeParamSupplementaire))
FIN
FIN
SINON
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Faux, _client, "Requête vide")
FIN

//pg_Journalisation("FIDELITE ADELYA REQUETE : " +RC+ "Url : " + v_http_Requete.URL +RC+ "Authorization : " + "Basic " + Encode(v_chn_authAPI, encodeBASE64) + RC+ "Méthode : " + v_http_Requete.Méthode +RC+ "Contenu : "+ v_http_Requete.Contenu)
MajLog("Jou_Fidelite.log", RC +"REQUETE : " +RC+ "Url : " + v_http_Requete.URL +RC+ "Authorization : " + "Basic " + Encode(v_chn_authAPI, encodeBASE64) + RC+ "KeyId : " + gc_chn_CleStime + RC+ "Méthode : " + v_http_Requete.Méthode +RC+ "Contenu : "+ v_http_Requete.Contenu)
MajLog("Jou_Fidelite.log", RC +"CONTENU SANS ENCODAGE : " + v_chn_ReqLog)

// Envoi requête et lecture réponse
ChronoDébut()
v_http_Reponse = HTTPEnvoie(v_http_Requete)
v_dur_Duree est une Durée = ChronoFin()
SI v_dur_Duree > v_http_Requete.DuréeNonRéponse ALORS
MajLog("Jou_Fidelite.log", RC + "TIMEOUT de "+v_http_Requete.DuréeNonRéponse/1000+" secondes dépassé")
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Vrai, _http, "", "La requête fidélité met trop de temps à s'exécuter (plus de " + v_http_Requete.DuréeNonRéponse/1000 + " secondes)")

SI gc_boo_MailTimeout ALORS
SI gc_chn_MailDestinatairesTimeout <> "" ALORS
v_chn_TexteMail = ChaîneConstruit(v_chn_TexteMail, PARAGE.AGEVIL + " - " + PARAGE.LIb6, DateHeureVersChaîne(DateHeureSys()), v_chn_ReqLog, gc_int_TimeOut, v_chn_LibMethode)
// v_chn_TexteMail += rc + "Temps de la réponse : " + v_dur_Duree..EnSecondes + " !"
Envoi_Mail(:v_boo_RetourMail, :gc_chn_MailDestinatairesTimeout, : "Fidélité - Erreur de TIMEOUT " + PARAGE.AGEVIL, :v_chn_TexteMail, :"ne-pas-repondre@inovaxo.fr", :"1")
FIN
FIN
SINON
SI ErreurDétectée ALORS
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Vrai, _http, "", "Impossible de se connecter à l'API Adelya" + RC + RC + ErreurInfo(errMessage))
SINON
// Code état HTTP 200 = OK sinon Erreur http
SI v_http_Reponse.CodeEtat = 200 ALORS
// Cas test serveur

SI v_http_Reponse.ContentType <> "application/json;charset=UTF-8" ALORS
v_str_ReponseRequete = pg_FidAdelya_Extraire_Erreur(v_http_Reponse.Contenu)
SINON
v_json_ResultatAPI = ChaîneVersJSON(v_http_Reponse.Contenu)
SI PAS ErreurDétectée ALORS
SI TableauOccurrence(v_json_ResultatAPI..Membre) > 0 ALORS
SI v_json_ResultatAPI..Membre[1]..Nom = "ApiReturn" ALORS
// Si ApiReturn et propriété code pas égale à OK alors il y a une erreur
POUR TOUT Json_Membre DE v_json_ResultatAPI..Membre[1]
// Erreurs Adelya traduites dans un tableau associatif de la collection
SI Json_Membre..Nom = "code"
SI Json_Membre..Valeur = "OK" ALORS
v_boo_ErreurAPI = Faux
SORTIR
SINON
v_boo_ErreurAPI = Vrai
FIN
SINON
// Construction du message d'erreur provenant d'Adelya avec son code (errorCode) et son message (errorMessage) traduit (Sans traduction champ = message)
SI v_boo_ErreurAPI ET Json_Membre..Nom = "errorCode" ALORS
v_chn_ErreurCode = Json_Membre..Valeur
FIN

SI v_boo_ErreurAPI ET Json_Membre..Nom = "errorMessage" ALORS
v_chn_ErreurMessage = Json_Membre..Valeur
v_chn_ErreurMessage = UTF8VersChaîne(v_chn_ErreurMessage)
FIN
FIN
FIN
SI v_boo_ErreurAPI ALORS
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Vrai, _api, v_chn_ErreurCode, v_chn_ErreurMessage)
SINON
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Faux, _Aucune, "", "", v_json_ResultatAPI)
FIN
SINON
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Faux, _Aucune, "", "", v_json_ResultatAPI)
FIN
SINON
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Vrai, _api, "", "Aucun résultat renvoyé par l'API Adelya")
FIN
SINON
v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Vrai, _api, "", "Le format JSON renvoyé par l'API Adelya est incorrect")
FIN
FIN

SINON
// Erreur HTTP
v_chn_ErreurCode = SansEspace(v_http_Reponse.CodeEtat)
v_chn_ErreurMessage = SansEspace(v_http_Reponse.DescriptionCodeEtat)

v_str_ReponseRequete = pg_FidAdelya_Traite_Reponse(Vrai, _http, v_chn_ErreurCode, v_chn_ErreurMessage)
FIN
FIN
FIN

SI gp_boo_ProxyClient=1 ET NoSpace(gp_chn_ProxyAdress)<>"" ALORS
SI gp_chn_ProxyLogin<>"" ALORS
Proxy(gp_chn_ProxyAdress, Val(gp_int_ProxyPort),gp_chn_ProxyLogin,gp_chn_ProxyPass)
SINON
Proxy(gp_chn_ProxyAdress, Val(gp_int_ProxyPort))
FIN
FIN

SI v_str_ReponseRequete.boo_Erreur ALORS
MajLog("Jou_Fidelite.log", RC +"ERREUR : " +RC+ "Résultat renvoyé par l'API : "+ v_http_Reponse.Contenu +RC+ "Erreur : " + v_str_ReponseRequete.chn_ErreurCode + " - "+ Remplace(v_str_ReponseRequete.chn_ErreurMessage, RC, ""))
//MajLog("Jou_Fidelite.log", rc +"REQUETE D'ORIGINE : " +RC+ "Url : " + v_http_Requete.URL +RC+ "Authorization : " + "Basic " + Encode(v_chn_authAPI, encodeBASE64) + RC+ "Méthode : " + v_http_Requete.Méthode +RC+ "Contenu : "+ v_http_Requete.Contenu)
MajLog("Jou_Fidelite.log", RC +"IPs : " +RC+ NetListeAdresseIP() +RC)
SINON
MajLog("Jou_Fidelite.log", RC +"SUCCES : " +RC+ "Résultat renvoyé par l'API : "+ v_http_Reponse.Contenu)
FIN
MajLog("Jou_Fidelite.log", RC)

gc_boo_IgnoreNotFoundLog = Faux
RENVOYER(v_str_ReponseRequete)


--
Cordialement,

Lucas Cabley