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 :

PageParametre et encodage [WB23]


Sujet :

WebDev

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 372
    Par défaut PageParametre et encodage
    Bonjour,
    j'ai développé un webhook pour qu'un prestataire puisse me renvoyer les mises à jour de statuts de commandes passées chez lui.
    le prestataire me renvoie une json dans une requête http
    Pour celà, j'ai développé une page webdev awp qui récupère la requête http via la fonction
    Le problème que je rencontre est que si le caractère '&' est présent dans la json, celle-ci est récupérée tronquée, ce qui me fausse ma récupération de données.

    voici le code que j'utilise pour récupérer la json:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TraceDébut(trFichier,Par_RepLog+"json_log.txt")
    maJson est une chaîne
    QUAND EXCEPTION DANS 
    	maJson = UTF8VersChaîne(PageParamètre(paramBuffer))
    FAIRE
    	Trace(DateSys()+"-"+HeureSys()+TAB+"erreur webhook")
    	maJson = UTF8VersChaîne(Gauche(PageParamètre(1),Taille(maJson)-1) //pour corriger quand parfois un '=' vient se coller à la fin de la json
    FIN
    Trace(DateSys()+"-"+HeureSys()+TAB+"json = "+maJson )
    quand je regarde dans mes logs, je vois ma json qui s’arrête juste avant le '&' qui est attendu.

    Mon prestataire me transmet bien une json encodée en UTF8.

    Fait assez bizarre, je n'ai ce problème que sur mon serveur de production, sur mon serveur de test (pas le même environnement) , je n'ai pas le soucis; ce qui m'a permis de comparer les json entre les 2 environnements et de parvenir à la conclusion que le '&' était fautif.

    Comment je peux récupérer correctement ma json?

    je vous remercie

  2. #2
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 592
    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 592
    Par défaut
    Bonjour,

    je ne sais pas comment ça fonctionne exactement, mais pourquoi ne pas encoder le json en base 64 ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Par défaut
    Bonjour,

    J'ai déjà eu le même genre de souci et comme Frenchstring l'a dit, tu peux utilisé l'encodage en base64.
    j'avais solutionné mon problème comme ça.
    Par contre bien précisé le format d'encodage suivant : encodeBASE64URL

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 372
    Par défaut
    Bonjour à tous.
    Je vous remercie pour vos réponses.
    Par contre, je ne comprends pas trop comment utiliser encodeBASE64URL; est-ce que je l'utilise sur la chaine maJson que j'ai récupérée?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maJson = Encode(UTF8VersChaîne(PageParamètre(1)),encodeBASE64URL)

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Par défaut
    Il faut que ton prestataire te l'envoi déjà encodé en base64. Comme cela il n'y aura plus les caractère "&".
    Ensuite tu la réceptionne dans ton PageParamètre() (plus de souci car le "&" ne sera pas dans la chaine encodée.)
    Puis tu la décode dans ton programme pour pouvoir récupérer cette chaine JSON avec tous les caractères.

    Bon dev

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 372
    Par défaut
    Le problème, c'est que mon prestataire gère beaucoup de client donc il ne changera pas sa façon d'envoyer les requêtes (qui ont l'air de fonctionner chez les autres clients et sur mon serveur de test).

    Une chose étrange, c'est que mes tests sur un autre serveur ne rencontraient aucun problème.
    Mon serveur de prod est un windows server 2016 64 bits et mon serveur de test est un windows server 2012 R2 64 bits.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Par défaut
    Dans l'aide de la fonction Pageparamètre() tu peux ajouter des paramètres à la fonction. As tu essayé?

    "paramAvecDécodage" ou "paramSansDécodage" ou "paramBuffer"

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 372
    Par défaut
    Bonjour,
    je vous remercie pour votre aide.

    Je viens de comprendre mon problème suite au retour de ma requête au service technique de PCSOFT.

    Comme je l'ai indiqué dans mon premier message, je fais un premier essais avec PageParametre(paramBuffer), et si ça ne fonctionne pas, je fais un PageParametre(1) et je retire le dernier caractère car j'avais un '=' qui se rajoutait à la fin de la json et qui faisait planter la fonction.

    Le problème est que le caractère '&' sert à séparer les paramètres, c'est pour ça qu'en faisant PageParametre(1), je récupère tout jusqu'au premier '&'.

    j'ai résolu mon problème en recréant la json via une boucle pour récupérer tous les paramètres et j'obtiens bien au final ma 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
    15
    16
     
    maChaine est une chaine
    maJson est une chaine
    i est un entier
     
    i = 1
    maChaine = PageParamètre(i)
    maJson = maChaine
    TANTQUE maChaine <> ""
    	i++
    	maChaine = PageParamètre(i)
    	SI maChaine <> "" ALORS 
    		SI maJson <> "" ALORS maJson += "&"
    		maJson += maChaine
    	FIN
    FIN
    Au final, je m'étais bien planté, ce n'était pas un problème d'encodage.

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

Discussions similaires

  1. Encodage de caracteres: eviter 81, 8D, 8F, 90, 9D ->
    Par Fladnag dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2004, 11h17
  2. Encodage de cd en fichier mp3
    Par clovis dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 08/04/2004, 01h13
  3. [ENCODAGE][JAVA]Afficher correctement des accents
    Par kornelius dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/02/2004, 16h37
  4. Encodages DOS et Windows
    Par Aramis dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2003, 17h55
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16

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