43 votes

Comment envoyer une double citation dans le paramètre -d pour curl.exe ?

Comment puis-je envoyer un caractère entre guillemets à l'aide de curl.exe dans l'interface de l'utilisateur ? -d paramètre. Je ne veux pas coder l'URL du guillemet double. Puisque le -d Les données doivent être entourées de guillemets. Je n'arrive pas à le faire fonctionner.

Ou existe-t-il un autre drapeau pour curl.exe qui lui indique d'utiliser le contenu d'un fichier pour l'ensemble des données du formulaire ?

53voto

Alexander Chuprin Points 539

Mon curl.exe fonctionne avec ce formulaire :

-d "{\"param\":\"value\"}"

c'est-à-dire des guillemets doubles autour des données et des guillemets doubles masqués par une barre oblique inverse à l'intérieur.

19voto

martona Points 2873

Vous pouvez très certainement échapper aux guillemets doubles. La manière de le faire dépend de votre système d'exploitation et de votre shell, que vous n'avez pas spécifié. Sous Windows, vous utilisez le ^ comme caractère d'échappement.

Vous pouvez également le faire :

curl [...] -d @filename 

...qui lit les données postales d'un fichier appelé nom de fichier.

Google et/ou l'homme est votre ami.

http://curl.haxx.se/docs/manpage.html

5voto

Isac Points 1563

Vous pouvez entourer les données de guillemets simples et utiliser des guillemets doubles à l'intérieur.

Exemple dans PowerShell

curl.exe https://httpbin.org/anything `
    -H 'Content-Type: application/json' `
    -d '{ "this": "is proper json" }'.Replace('"', '""')

Veuillez noter que cURL est intégré à Windows 10 mais PowerShell l'ombrage avec un alias vous devez donc utiliser curl.exe

5voto

Gaz Points 1449

Pour la question de l'échappement des guillemets doubles, je trouve que tripler les guillemets doubles fonctionne à partir du shell :

curl -d {"""foo""":"""bar"""}

alors que doubler les guillemets fonctionne à partir d'un fichier batch :

curl -d {""foo"":""bar""}

Ce qui est assez gênant pour tester d'abord dans le shell.

-2voto

Anand Points 134

Il y a quelque chose qui s'appelle dollar slashy string .

def cmd = $/ curl -d '{"param":"value"}' -X POST https://example.com/service /$
sh cmd

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