PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → retour d'un Webservice REST
retour d'un Webservice REST
Iniciado por Sauveur CONSALVI, 04,sep. 2020 17:01 - 4 respuestas
Miembro registrado
402 mensajes
Publicado el 04,septiembre 2020 - 17:01
Bonjour,
J'ai réalisé un Webservice REST que j'ai mis chez KALANDA
Quand je l’interroge via un projet Windev 25 sur mon PC, pas de problème
Quand je fait cette même interrogation sur un projet Windev Mobile 25, ANDROID, la réponse est illisible
Que l’exécution se fasse à partir de l'émulateur ou de l'installation sur le téléphone
Voila la réponse




Voici le code d'appel (Identique en Windev et Windev Mobile
hRequete est httpRequest
hRequete..Method = httpGet
hRequete..URL = "http://www.asorco.fr/WS_Traitement_Asorco?WS_Traitement_Asorco=" + SAI_NomSociete
rReponse est un httpRéponse = HTTPEnvoie(hRequete)
sToto est une chaîne=BufferVersHexa(rReponse..Contenu)
Info("Avec httpRequest",rReponse..Contenu)
SI ErreurDétectée ALORS
Erreur("Erreur lors de la requête "+ErreurInfo(errComplet))
SINON
////// info(rReponse..StatusCode,rReponse..DescriptionCodeEtat,rReponse)
SI rReponse..StatusCode<>200 ALORS
Erreur("Erreur lors de la requête "+ErreurInfo(errComplet),rReponse..DescriptionCodeEtat)
//// Info ("Trouvée "+rReponse ..Content)
SINON
//// Info ("Société non trouvée" , rReponse..Content," ","Code état "+rReponse..CodeEtat,"Erreur "+rReponse..DescriptionCodeEtat)
SELON rReponse.Contenu
// 0=Origine, 909=Société Non trouvée, 9090=Paramètre "WebserviceParamètre("NomSoc")" reçut est vide
CAS "909"
Erreur("Société non retrouvée" +SAI_NomSociete)
AUTRE CAS
Info("Trouvé Code société = "+rReponse..Contenu)
FIN
FIN
FIN


Voila le code du Webservice
gsEnvoi est une chaîne // SocLit,nom de la société pour une lecture de société
// SocEcr,nom de la société pour une création de société
gtabTableEnvoi est un tableau de chaînes
gsReponse est une chaîne
gsTraitement, gsCode, gsComplement est une chaîne ANSI

Procedure Webservice_Asorco()
// Utilisez la commande WebserviceParamètre() pour récupérer les paramètres du point d'entrée du Webservice REST associé à cette procédure.
// Consultez l'aide de WebserviceParamètre pour plus d'informations.
gsEnvoi = WebserviceParamètre("WS_Traitement_Asorco")
gbOK=HPasse("*","Asorco$68100")
SI gbOK=Faux ALORS
gsReponse= "Erreur dans la définition du mot de passe des fichiers"
FIN
SI WebserviceParamètre("WS_Traitement_Asorco")="" ALORS
gsReponse= "Vous n'avez rien transmis"
SINON
gtabTableEnvoi=ChaîneDécoupe(gsEnvoi,",")
SI gtabTableEnvoi.Occurrence()<>2 ALORS
gsReponse="Le traitement demandé dot être constitué du code de la demande et du complément, séparé par , (une virgule) "+RC+gsEnvoi
SINON
gsCode=gtabTableEnvoi[1]
gsComplement=gtabTableEnvoi[2]
SELON gsCode
CAS "SocLit" // Recherche de la société
SocieteLit()
RENVOYER gsReponse
CAS "SocEcr" // Enregistrement d'une société
RENVOYER gsReponse
AUTRE CAS
gsReponse="Le traitement demandé n'est pas prévu !"+RC+gsEnvoi
FIN
FIN
FIN
RENVOYER gsReponse


Pourquoi cette anomalie ?
Comment corriger ? Traduire la réponse ? Si oui, comment ?
Cordialement
SC

--
Cordialement
SC
Miembro registrado
185 mensajes
Publicado el 05,septiembre 2020 - 14:59
Cà a tout l'air d'être un problème de codage du retour.
En mobile, toutes les chaines sont en unicode. Si tu tapes unicode dans l'aide, tu auras toutes les fonctions pour pouvoir lire ta chaine.

Désolé de ne pas être plus précis mais j'ai utilisé une fois il y a deux ans et je devrai aussi parcourir l'aide pour t'aider.

--
Pierre
Miembro registrado
402 mensajes
Publicado el 06,septiembre 2020 - 08:18
Bonjour,
C'est vrai que ces histoires d'encodage sont pénible
J'ai même trouvé des plaintes a ce sujet sur le forums !
J'avais essayé plusieurs combinaison, mais vote réflexion m'a aidé
Voila la bonne syntaxe
sReponse= AnsiVersUnicode(rReponse..Contenu)

Cordialement
SC

--
Cordialement
SC
Miembro registrado
2.682 mensajes
Publicado el 06,septiembre 2020 - 10:39
Bonjour,

Sauf erreur de ma part, le retour d'un WS est de l'utf8. C'est le codage par défaut du web. Donc il serait plus judicieux de faire un Utf8VersChaine() me semble-t-il...

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
402 mensajes
Publicado el 07,septiembre 2020 - 06:58
Bonjour,
Non, j'avais essayé sans sucés ...
Mais votre remarque me fait penser que j'ai oublié de préciser le type de sReponse
Il faut que ce soit de l’Unicode, comme cela le code est valable sur Windev Mobile également
Cordialement
SC

--
Cordialement
SC