Передача данных JSON в запросе на получение в качестве тела запроса

Здравствуйте, мне нужно отправить запрос на получение по URL-адресу
http://onemoredemo.appspot.com/group?authToken=access_token&authMethod=oauth

с телом запроса содержит объект json, как показано ниже.

{"goupid":"some_variable"
}

Вот раздел кода 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", "[email protected]");
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
Это дало мне правильный ответ, но теперь прошло больше часа, поэтому срок действия токена доступа истек. Я знаю, что странно отправлять параметр, а также тело запроса в запросе на получение, но я должен его отправить.

Пожалуйста, помогите, как отправить объект json в теле запроса в запросе на получение.


person Ritesh Mehandiratta    schedule 20.07.2012    source источник
comment
что за случайный get. в середине вашего кода?   -  person Jon Taylor    schedule 20.07.2012


Ответы (2)


Не делай этого.

Прочтите это: 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

person DallaRosa    schedule 20.07.2012

Тело запроса GET не читается.

Вы пробовали добавить его в параметры:

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

person Blundell    schedule 20.07.2012