|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
| ? à la place d'un é dans un service web rest Windev |
| Started by Jean, Feb., 19 2026 6:55 PM - 2 replies |
| |
| | | |
|
| |
| Posted on February, 19 2026 - 6:55 PM |
Bonjour,
J'ai créé un service web Rest avec Windev. Il y a un point d'entrée de type Post avec le format de la requête et de la réponse JSON (UTF8). La procédure appelée attend un buffer en paramètre et le point d'entrée est défini avec une désérialisation automatique dans ce buffer.
Dans la procédure j'ai une classe contenant des membres de types chaînes. Au début de la procédure j'utilise la fonction deserialise() pour affecter les membres de ma classe à partir de mon buffer.
Lorsque je regarde le buffer avec le débogueur il y a plein de caractères caract(0). Je suis obligé de les enlever car la désérialisation plante avec ces caract(0).
J'ai essayé de faire un htmlVersTexte() avec mon buffer pour mettre à jour une chaine (Ansi par défaut). Cela m'enlève les caract(0) et je peux faire le désérialise() vers une instance de ma classe.
Par contre les lettres accentuées ne sont pas bien affectée dans les membres de ma classe. Les é deviennent des ?
J'ai essayé pas mal de transformations avec du Utf8, de l'unicode et je n'arrive pas à obtenir les é. Lorsque je regarde les valeurs des chaînes dans le débogueur je vois bien les é mais la désérialisation json me met des ?
Je dois rater quelque chose mais je ne vois pas quoi. J'ai testé en local avec WDTestRest et Soapui après déploiement mais c'est pareil.
Merci d'avance pour votre aide. |
| |
| |
| | | |
|
| | |
| |
| Posted on February, 20 2026 - 3:30 PM |
Le problème vient sans doute de la fonction Désérialise. A ma connaissance, elle fonctionne bien seulement si on désérialise un objet ou une structure Windev et qui a été sérialisée avec la fonction Sérialise. Selon la doc, on récupère une chaine Ansi ou un Buffer, d'ou l'erreur avec les caractères accentués. Question: as-tu sérialisé avec la fonction Windev ?
Jean a écrit :
Bonjour,
J'ai créé un service web Rest avec Windev. Il y a un point d'entrée de type Post avec le format de la requête et de la réponse JSON (UTF8). La procédure appelée attend un buffer en paramètre et le point d'entrée est défini avec une désérialisation automatique dans ce buffer.
Dans la procédure j'ai une classe contenant des membres de types chaînes. Au début de la procédure j'utilise la fonction deserialise() pour affecter les membres de ma classe à partir de mon buffer.
Lorsque je regarde le buffer avec le débogueur il y a plein de caractères caract(0). Je suis obligé de les enlever car la désérialisation plante avec ces caract(0).
J'ai essayé de faire un htmlVersTexte() avec mon buffer pour mettre à jour une chaine (Ansi par défaut). Cela m'enlève les caract(0) et je peux faire le désérialise() vers une instance de ma classe.
Par contre les lettres accentuées ne sont pas bien affectée dans les membres de ma classe. Les é deviennent des ?
J'ai essayé pas mal de transformations avec du Utf8, de l'unicode et je n'arrive pas à obtenir les é. Lorsque je regarde les valeurs des chaînes dans le débogueur je vois bien les é mais la désérialisation json me met des ?
Je dois rater quelque chose mais je ne vois pas quoi. J'ai testé en local avec WDTestRest et Soapui après déploiement mais c'est pareil.
Merci d'avance pour votre aide. |
| |
| |
| | | |
|
| | |
| |
Registered member 4,341 messages |
|
| Posted on February, 20 2026 - 7:11 PM |
Bonjour, Si l'on pouvait avoir un (petit) JSON (balisé) que tu envoies pour la désérialisation, cela nous permettrait de t'aider plus facilement Quoiqu'il en soit, le \0 provient certainement d'un Null Terminated String -- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFMMessage modified, February, 20 2026 - 7:17 PM |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|