Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send double quote in -d parameter for curl.exe?

Tags:

curl

windows

How can I send a double quote char using curl.exe in the -d parameter. I don't want to URL encode the double quote. Since the -d data needs to be surrounded in double quotes, I cannot seem to get it to work.

Or is there another flag for curl.exe that tells it to use a files contents for the whole form post data?

like image 828
slolife Avatar asked Dec 22 '10 22:12

slolife


4 Answers

My curl.exe works with this form:

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

i.e. doublequotes around data, and doublequotes masked with backslash inside

like image 115
Alexander Chuprin Avatar answered Nov 11 '22 11:11

Alexander Chuprin


You can most certainly escape double quotes. How you do that depends on your operating system and shell, which you fail to specify. On Windows, you'd use the ^ as the escape character.

You can also do this:

curl [...] -d @filename 

...which reads post data from a file called filename.

Google and/or man is your friend.

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

like image 20
martona Avatar answered Nov 11 '22 09:11

martona


For the escaping of double quote question, I'm finding that tripling the doublequotes works from the shell:

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

while doubling the doublequotes works from within a batch file:

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

Which is quite annoying for testing in the shell first.

like image 8
Gaz Avatar answered Nov 11 '22 10:11

Gaz


You can surround the data with single quotes and use double quotes inside.

Example in PowerShell

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

Please note that cURL is built into Windows 10, but PowerShell shadows it with an alias, so you have to use curl.exe

like image 7
Isac Avatar answered Nov 11 '22 11:11

Isac