PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Utilisation api -  RESTEnvoie avec erreur en retour suivant paramètre
Utilisation api - RESTEnvoie avec erreur en retour suivant paramètre
Iniciado por r.dartus, 30,dic. 2019 15:14 - 2 respuestas
Publicado el 30,diciembre 2019 - 15:14
J'utilise un api ou je passe en paramètre un "user name"

Si ce "user name" contient des espaces , la réponse du RESTEnvoie génère l'erreur suivante :

<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>


Si ce username est d'un seul mot (sans espace), l'api me retourne une réponse correcte

Pourtant , si je fais le mêmes test avec l'extension Restman de google , je n'ai aucun problème dans les 2 cas.


J'ai essayé avec un Urlencode de l'url , cela ne change rien .

si vous avez une piste , je suis preneur.


------ code ci-dessous ----
gVar_maReq est une restRequête
gVar_LaReponse est une restRéponse

gVar_maReq..URL = mon_url
gVar_maReq..Méthode = httpGet
gVar_maReq..ContentType = "application/json"
gVar_maReq..Utilisateur = simplydesk_id
gVar_maReq..MotDePasse = simplydesk_mdp

gVar_LaReponse = RESTEnvoie(gVar_maReq)
Miembro registrado
324 mensajes
Publicado el 30,diciembre 2019 - 15:49
En remplacant les "espaces" par %20 dans le user name ? ca ne fonctionne pas ?

Alors ils vous faudra remplacer les espaces avant l'appel à l'API et faire de même à la réception de la requête au sein de l'api ^^

gVar_maReq..Utilisateur = simplydesk_id
gVar_maReq..MotDePasse = simplydesk_mdp


La syntaxe là est pas vraiment recommandé pour le coup et peu poser des problèmes avec pas mal de webservices

le mieux est de crypté le username et le mot de passe et de coller dans ca dans le json à l'envoie, dans ce cas il faudra passer par du put et non du get, de mémoire le get ne transmet jamais le corps du message.
De plus sur une connexion http, avec un sniffeur de paquet chopper login et mot de passe sont une très mauvaise idée !

Moralité :
Crypté login et pass et mettre le tout soit

- Dans le json avec un httpPut en corps de requête
- Dans l'url qui sert à appeler le webservice et là on peut rester avec du GET.

La plupart des API modèrne ne fonctionne que par token, on ne transmet plus de login et mot de passe, ou à défaut juste au premier appel, après je dis ça mais je n'ai pas le contexte d'utilisation de votre requête ^^.

>si je fais le mêmes test avec l'extension Restman de google
Il faudrait regarder la requête http qui transite pour comprendre ce qu'il ajoute dans le "username" pour contourné l'espace.

Et le truc encore mieux, ne JAMAIS avoir d'espace dans un username ou mot de passe :\, il faut dans la mesure du possible éviter d'utiliser des caractères qui ne sont ni chiffres ni lettres, c'est la porte ouverte aux ennuis
Miembro registrado
3 mensajes
Publicado el 30,diciembre 2019 - 18:34
Merci pour le %20 , ça marche.

Concernant le fonctionnement, c'est ce que propose le fournisseur, j'applique les règles fournies, pas trop le choix

Merci pour les informations de protection, tj bon à savoir.