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

时间:2012-07-20 08:47:00

标签: java android httpwebrequest httpurlconnection

您好我必须向网址发送获取请求 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浏览器向网址发送了一个请求 http://onemoredemo.appspot.com/group?authToken=ya29.AHES6ZRDl-RqiA8W0PhybU_hMluHrHRjlJBvq06Vze0izJq0Ovjc088&authMethod=oauth
它给了我正确的答案,但现在它超过一个小时,所以acccesstoken到期。我知道在get请求中发送参数以及requestbody但我必须发送它很奇怪。

请帮助我们在get请求中如何在请求体中发送json对象。

2 个答案:

答案 0 :(得分:16)

不要这样做。

阅读本文: http://tech.groups.yahoo.com/group/rest-discuss/message/9962

  

“是的。换句话说,任何HTTP请求消息都允许包含   消息体,因此必须解析消息。服务器   然而,GET的语义受到限制,以至于身体(如果有的话),   对请求没有语义含义。解析的要求   与方法语义的要求分开。

     

所以,是的,你可以发送一个带有GET的主体,不,它永远不会有用   这样做。

     

这是HTTP / 1.1的分层设计的一部分,将变得清晰   一旦规范被分区(正在进行中)。“

关于此检查的其他有趣讨论:

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

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

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

答案 1 :(得分:2)

未读取GET请求的正文。

您是否尝试将其添加到params:

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