81 votes

Comment poster des données brutes avec curl?

Avant de poster ceci comme un doublon; j'ai essayé beaucoup des suggestions que j'ai trouvées sur SO.

Jusqu'à présent, j'ai utilisé Postman pour envoyer des données à un service web Java. Cela fonctionne très bien comme suit:

entrer la description de l'image ici

Je veux maintenant faire la même chose en utilisant curl, donc j'ai essayé de le faire de différentes manières:

$ curl -X POST --data "il s'agit de données brutes" http://78.41.xx.xx:7778/
$ curl -X POST --data-binary "il s'agit de données brutes" http://78.41.xx.xx:7778/
$ curl -X POST --data "@/home/kramer65/afile.txt" http://78.41.xx.xx:7778/
$ curl -X POST --data-binary "@/home/kramer65/afile.txt" http://78.41.xx.xx:7778/

Malheureusement, tous ceux-ci montrent un corps brut vide du côté récepteur.

Est-ce que quelqu'un sait ce que je fais de mal ici? En quoi ma requête curl est-elle différente de ma requête Postman? Tous les conseils sont les bienvenus!

111voto

Bertrand Martel Points 16529

La balise --data de curl enverra par défaut Content-Type: application/x-www-form-urlencoded dans l'en-tête de la requête. Cependant, lorsque vous utilisez le mode corps raw de Postman, Postman envoie Content-Type: text/plain dans l'en-tête de la requête.

Donc, pour obtenir le même résultat que Postman, spécifiez -H "Content-Type: text/plain" pour curl :

curl -X POST -H "Content-Type: text/plain" --data "this is raw data" http://78.41.xx.xx:7778/

Notez que si vous souhaitez visualiser la requête complète envoyée par Postman, vous pouvez activer le débogage pour l'application packagée. Consultez ce lien pour toutes les instructions. Ensuite, vous pouvez inspecter l'application (clic droit dans Postman) et voir toutes les requêtes envoyées depuis Postman dans l'onglet network :

enter image description here

7 votes

Il convient toutefois de noter que la partie corps est envoyée exactement de la même manière. Cela modifie simplement un en-tête.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X