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

Et oui.. l'erreur était à cause de ce Content-Length :/