|
| 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. |
| |
| |
| | | |
|
| | | | |
| | |
|