Page 1 sur 1

[requête http] curl => socket (resolu)

Publié : jeu. 13 avr. 2017, 08:27
par CamilleCoc
Bonjour,

J'aimerais traduire une commande curl en requête http utilisable avec des sockets.
Si j'ai :

Code : Tout sélectionner

curl -H “Content-Type: application/json” http://www.url.com/setup -X POST -d ‘params:un_param’
Alors en HTTP ca donne :

Code : Tout sélectionner

POST /setup HTTP/1.1\r\nHost: www.url.com\r\nContent-Type: application/json\r\nContent-Length: 15\r\n\r\nparams=un_param
Mais si j'ai ça :

Code : Tout sélectionner

curl -H “Content-Type: application/json” http://www.url.com/setup -X POST -d '{"params":"un_param"}'[code] ?

Re: [requête http] curl => socket

Publié : jeu. 13 avr. 2017, 09:23
par benjarobin
Après les 2 sauts de ligne, tu rajoutes les données sans aucune modification

Re: [requête http] curl => socket

Publié : jeu. 13 avr. 2017, 09:48
par CamilleCoc
Salut merci pour ta réponse.
C'est ce que j'ai fais pour le premier curl, non ?

Code : Tout sélectionner

POST /setup HTTP/1.1\r\nHost: www.url.com\r\nContent-Type: application/json\r\nContent-Length: 15\r\n\r\nparams=un_param
Je n'ai pas bien compris ce quelle était la différence entre les deux curl...

Re: [requête http] curl => socket

Publié : jeu. 13 avr. 2017, 15:30
par CamilleCoc
Non ?

Re: [requête http] curl => socket

Publié : jeu. 13 avr. 2017, 22:10
par benjarobin
Ton postulat de base est faut, cela ne change pas params:un_param en params=un_param
Bref, je ne change en rien ma réponse initiale

Re: [requête http] curl => socket

Publié : ven. 14 avr. 2017, 08:42
par CamilleCoc
Ben pourtant j'ai bien fais ça :

Code : Tout sélectionner

POST /setup HTTP/1.1\r\nHost: www.url.com\r\nContent-Type: application/json\r\nContent-Length: 25\r\n\r\n{\"params\":\"un_params\"}
, mais ca ne marche pas...
Il me renvoit :

Code : Tout sélectionner

HTTP/1.1 400 Bad Request
Access-Control-Allow-Headers:Content-Type
Cache-Control:no-cache
Content-Length:0
 
"un_params"}

Re: [requête http] curl => socket

Publié : ven. 14 avr. 2017, 12:23
par benjarobin
Regarde avec Wireshark ce que tu envoies

Re: [requête http] curl => socket

Publié : ven. 14 avr. 2017, 14:06
par CamilleCoc
J'envoie bien la bonne requête et le serveur me répond bad request. Confirmé par Wireshark.
Tu confirmes, que j'ai bien mis les \r\n au bon endroit et au bon nombre ? Et que les paramètres json doivent bien être envoyés comme ça :

Code : Tout sélectionner

{\"params\":\"un_params\"}
Parce que j'avais fais une autre requête avec un simple paramètre :

Code : Tout sélectionner

POST /setup HTTP/1.1\r\nHost: www.url.com\r\nContent-Type: application/json\r\nContent-Length: 15\r\n\r\nparams=un_param
et là il n'y avait pas de problème.

Re: [requête http] curl => socket

Publié : ven. 14 avr. 2017, 21:12
par benjarobin
Le problème c'est que l'on n'a aucun contexte, on ne sais même pas dans quel langage tu le fait...
La requête qui doit être envoyé est celle-ci :

Code : Tout sélectionner

POST /setup HTTP/1.1
Host: www.url.com
Content-Type: application/json
Content-Length: 22

{"params":"un_params"}
Tu dois voir ceci sous Wireshark
Tu n'avais quand même pas mit 15 en Content-Length ? Je n'avais pas vérifié... Pour rappel Content-Length doit être égale au nombre d'octet envoyé après les 2 sauts de lignes

Re: [requête http] curl => socket

Publié : ven. 14 avr. 2017, 22:23
par CamilleCoc
benjarobin a écrit : ven. 14 avr. 2017, 21:12Tu n'avais quand même pas mit 15 en Content-Length ? Je n'avais pas vérifié... Pour rappel Content-Length doit être égale au nombre d'octet envoyé après les 2 sauts de lignes
Merci beaucoup pour ton aide :D
Et oui.. l'erreur était à cause de ce Content-Length :/