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

Applications, problèmes de configuration réseau
Répondre
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

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

Message 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] ?
Dernière modification par CamilleCoc le ven. 14 avr. 2017, 22:23, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

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

Message par benjarobin »

Après les 2 sauts de ligne, tu rajoutes les données sans aucune modification
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

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

Message 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...
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

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

Message par CamilleCoc »

Non ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

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

Message 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
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

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

Message 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"}
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

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

Message par benjarobin »

Regarde avec Wireshark ce que tu envoies
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

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

Message 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.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17230
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

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

Message 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
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
CamilleCoc
Daikyu
Messages : 77
Inscription : mar. 07 mars 2017, 19:46

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

Message 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 :/
Répondre