I am required to post variables to a website API using JSON format. After some research and using a test post server I came up with this string:
curl -H "Content-Type: application/json" -X POST -d '{"id":"value"}' http://posttestserver.com/post.php
Successfully dumped 0 post variables.
View it at http://www.posttestserver.com/data/2015/09/12/09.46.20574590076
Post body was 12 chars long.
However no variables are parsed from the string (it should find the variable "id" in this case). Instead everything is put into the post body.
The full post request can be seen at the given address:
Time: Sat, 12 Sep 15 09:46:20 -0700
Source ip: 178.112.221.72
Headers (Some may be inserted by server)
HTTP_CONNECTION = close
REQUEST_URI = /post.php
QUERY_STRING =
REQUEST_METHOD = POST
GATEWAY_INTERFACE = CGI/1.1
REMOTE_PORT = 53709
REMOTE_ADDR = 178.112.221.72
CONTENT_LENGTH = 12
CONTENT_TYPE = application/json
HTTP_ACCEPT = */*
HTTP_USER_AGENT = curl/7.43.0
HTTP_HOST = posttestserver.com
UNIQUE_ID = VfRW3NBx6hIAAHNyJToAAAAK
REQUEST_TIME_FLOAT = 1442076380.6991
REQUEST_TIME = 1442076380
No Post Params.
== Begin post body ==
'{id:value}'
== End post body ==
Upload contains PUT data:
'{id:value}'
Here the data appears both in "post body" and under PUT. But again no post parameters are listed.
Am I doing something wrong? Is it at all possible to post variables using JSON (the way you would by using id=value&id2=value2
with application/x-www-form-urlencoded
)?
PS I found a similar post (how to post with curl to REST/JSON service?), there it depends on the server. But in my case by using this test server I should see the actual "raw" request (quoting from posttestserver.com
"Thus, I've put together a simple service which will dump the contents of an* HTTP POST to a file which can be viewed at leisure."
).