mathlearner
mathlearner

Reputation: 7659

Passing JSON data in get request as request body

Hi i have to send a get request to an url
http://onemoredemo.appspot.com/group?authToken=access_token&authMethod=oauth

with request body contains json object as shown below.

{"goupid":"some_variable"
}

Here is a section of java code for sending get request:

URL url1=new URL("http://onemoredemo.appspot.com/group?authToken="+access_token+"&authMethod=oauth");
conn=(HttpURLConnection) url1.openConnection();
conn.addRequestProperty("Content-type", "application/x-www-form-urlencoded");

conn.setRequestMethod("GET");
conn.setDoOutput(true);
JSONObject jj=new JSONObject();
HttpGet get;
get.

jj.put("groupid", "[email protected]");
conn.addRequestProperty("Content-TYpe", "application/json");
conn.getOutputStream().write(jj.toString().getBytes());
conn.connect();
InputStream is=conn.getInputStream();

I am getting an error java.io.FileNotFoundException.

I sent a request from mozilla browser to url
http://onemoredemo.appspot.com/group?authToken=ya29.AHES6ZRDl-RqiA8W0PhybU_hMluHrHRjlJBvq06Vze0izJq0Ovjc088&authMethod=oauth
It was giving me correct response but now its more than one hour so acccesstoken expire. I know its weird to send parameter as well as requestbody in get request but i have to send it.

Please help in how to send a json object in request body in get request.

Upvotes: 10

Views: 53864

Answers (2)

Blundell
Blundell

Reputation: 76536

The body of a GET request is not read.

Have you tried adding it to the params:

http://onemoredemo.appspot.com/group?authToken=access_token&authMethod=oauth&goupid=some_variable

Upvotes: 2

DallaRosa
DallaRosa

Reputation: 5815

Don't do it.

Read this: http://tech.groups.yahoo.com/group/rest-discuss/message/9962

"Yes. In other words, any HTTP request message is allowed to contain a message body, and thus must parse messages with that in mind. Server semantics for GET, however, are restricted such that a body, if any, has no semantic meaning to the request. The requirements on parsing are separate from the requirements on method semantics.

So, yes, you can send a body with GET, and no, it is never useful to do so.

This is part of the layered design of HTTP/1.1 that will become clear again once the spec is partitioned (work in progress)."

For other interesting discussions on this check this:

https://stackoverflow.com/a/978094/550967

https://stackoverflow.com/a/978173/550967

https://stackoverflow.com/a/978519/550967

Upvotes: 14

Related Questions