Search code examples
windowscurlpostcommand-line

cURL POST command line on WINDOWS RESTful service


My problem:
Using the command line tool to curl my localhost server while sending some data along with my POST request is not working.

What seems to be causing the error:
Imagine something like this

  1. curl -i -X POST -H 'Content-Type: application/json' -d '{"data1": "data goes here", "data2": "data2 goes here"}' http://localhost/path/to/api

Result of the returning data:

curl: (6) Could not resolve host: application; No data record of requested type
curl: (6) Could not resolve host: data goes here,; No data record of requested type
curl: (6) Could not resolve host: data2; No data record of requested type
curl: (3) [globbing] unmatched close brace/bracket at pos 16

After some searching I figured out that problem couldn't be the syntax used for the request since it works on UNIX shells.

Are you possibly using Windows? That so looks like a completely broken shell that doesn't properly deal with single-quotes vs double-quotes. I just tried that command line and it worked fine on my linux box. http://curl.haxx.se/mail/archive-2011-03/0066.html

I tried to work around with those "M/kbd> escaping it " but it still didn't work

2.

curl -i -X POST -H 'Content-Type: application/json' -d '{\"data1\": \"data goes here\", \"data2\": \"data2 goes here\"}' http://localhost/path/to/api

curl -i -X POST -H 'Content-Type: application/json' -d '{\"data1\"\: \"data goes here\", \"data2\"\: \"data2 goes here\"}' http://localhost/path/to/api

So I gave up. Windows seems to messing up with the JSON object sent on POST.


Solution

  • I ran into the same issue on my win7 x64 laptop and was able to get it working using the curl release that is labeled Win64 - Generic w SSL by using the very similar command line format:

    C:\Projects\curl-7.23.1-win64-ssl-sspi>curl -H "Content-Type: application/json" -X POST http://localhost/someapi -d "{\"Name\":\"Test Value\"}"
    

    Which only differs from your 2nd escape version by using double-quotes around the escaped ones and the header parameter value. Definitely prefer the linux shell syntax more.