PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → format des espaces et des paramètres vides dans l'URI d'appel à un web service REST
format des espaces et des paramètres vides dans l'URI d'appel à un web service REST
Iniciado por Yvan, 14,jun. 2020 17:42 - 2 respuestas
Miembro registrado
214 mensajes
Publicado el 14,junio 2020 - 17:42
Bonjour,

Je développe conjointement un web service REST / JSON et une application pour IOS.
L'application IOS consomme les méthodes de web service créées.

Tout va bien sauf lorsque je passe à mon webservice des chaines vides ou contenant des espaces, je reçois systématiquement une réponse de type 400- Bad Request, voir 500. OK je sais, une URL ne peut pas contenir de chaine vide, mais comment s'en sortir dans des cas comme celui ci-dessous :

Par exemple la méthode suivante : /API/user/login/{usercode}/{userpassword}/{terminalname}

Si je la consomme comme ceci : monurl/API/user/login/toto/superMDP/iphonedetoto , tout va bien

Par contre, les appels du genre : monurl/API/user/login/toto//iphonedetoto plante, donc toto doit avoir un mot de passe :)
Ou encore monurl/API/user/login/toto/superMDP/iphone de toto plante car il y a des espaces dans iphone de toto

J'ai bien tenté de remplacer les chaines vides par "+" ou "%20" ou même des caractères du genre "<EMPTY>" mais rien n'y change.

J'aurai pensé que la méthode RESTEnvoie encodait l'URL selon les conventions mais apparemment pas, et mettre manuellement les %20 etc ne semble pas être LA solution...

Je pense donc qu'il y a deux soucis :
1- comment utiliser un paramètre qui peut être optionnel (et donc des fois vide)
2- comment traiter les espaces

Petites idées???
Miembro registrado
121 mensajes
Publicado el 14,junio 2020 - 20:17
Bonsoir

URLEncode() ?

https://doc.pcsoft.fr/?3024040&name=urlencode_fonction

--
Bon dev

Thibault
Miembro registrado
214 mensajes
Publicado el 14,junio 2020 - 22:22
Merci Thibault,

En effet, l'utilisation de URLEncode() résout partiellement mon soucis.
Les espaces sont remplacés par %20 (ce qui ne fonctionnait pas quand je le faisait manuellement sur la page de test mais bon ...), etc --> Super

Reste le problème du paramètre que je ne renseigne pas :
Par exemple la méthode suivante : /API/user/login/{usercode}/{userpassword}/{terminalname}

Si je la consomme comme ceci : monurl/API/user/login/toto/superMDP/iphonedetoto , tout va bien

Par contre, les appels du genre : monurl/API/user/login/toto//iphonedetoto plante, donc toto doit avoir un mot de passe
--> je reçois une réponse 404- Not Found et je n'arrive donc pas au point d'entrée de ma méthode

Donc la dernière question qui m'occupe (pour le moment ;)) est de savoir s'il est possible de donner la valeur vide à un paramètre dans l'URI ?

Merci!