将JSON数据作为请求体传递的GET请求

10

你好,我需要向一个URL发送GET请求:


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

请求体需要包含如下JSON对象。

{"goupid":"some_variable"
}

以下是发送GET请求的Java代码示例:

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", "testing@iritesh.com");
conn.addRequestProperty("Content-TYpe", "application/json");
conn.getOutputStream().write(jj.toString().getBytes());
conn.connect();
InputStream is=conn.getInputStream();

我遇到了一个错误java.io.FileNotFoundException.

我从Mozilla浏览器发送了请求到URL
http://onemoredemo.appspot.com/group?authToken=ya29.AHES6ZRDl-RqiA8W0PhybU_hMluHrHRjlJBvq06Vze0izJq0Ovjc088&authMethod=oauth
它给我正确的响应,但现在已经过去一个多小时,所以accesstoken已经过期。我知道在get请求中同时发送参数和请求体很奇怪,但我必须这样发送。

请帮忙解决如何在get请求的请求体中发送json对象的问题。


1
你的代码中间的get.是什么意思? - Jon Taylor
2个回答

14

不要这样做。

请阅读以下内容:http://tech.groups.yahoo.com/group/rest-discuss/message/9962

"是的。换句话说,任何HTTP请求消息都允许包含消息正文,并且必须考虑到这一点来解析消息。但是,GET的服务器语义受到限制,以使得正文(如果有)对请求没有语义意义。解析要求与方法语义的要求是分开的。

所以,是的,你可以在GET中发送正文,但是,这样做永远没有用处。

这是HTTP/1.1的分层设计的一部分,一旦规范被分割(正在进行中),这一点将再次变得清晰明了。"

有关此问题的其他有趣讨论,请参见以下链接:

https://dev59.com/53NA5IYBdhLWcg3wZ85S#978094

https://dev59.com/53NA5IYBdhLWcg3wZ85S#978173

https://dev59.com/53NA5IYBdhLWcg3wZ85S#978519


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接