Android не может отправить запрос GET с HttpURLConnection

Я пытаюсь использовать HttpURLConnection в моем приложении. Я установил метод запроса на "GET", но когда я пытаюсь получить выходной поток, метод меняется на "POST"! Я не уверен, что причина в этом, но мой JSON-сервер (я использую JAX-RS) возвращает пустую страницу, когда я отправляю запрос, используя 'POST'.

Вот фрагмент моего кода:

// Create the connection
HttpURLConnection con = (HttpURLConnection) new URL(getUrl() + uriP).openConnection();
// Add cookies if necessary
if (cookies != null) {
  for (String cookie : cookies) {
    con.addRequestProperty("Cookie", cookie);
    Log.d("JSONServer", "Added cookie: " + cookie);
  }
}
con.setDoOutput(true);
con.setDoInput(true);
con.setUseCaches(false);
con.setRequestMethod("GET");
con.setConnectTimeout(20000);
// Add 'Accept' property in header otherwise JAX-RS/CXF will answer a XML stream
con.addRequestProperty("Accept", "application/json");

// Get the output stream
OutputStream os = con.getOutputStream();

// !!!!! HERE THE REQUEST METHOD HAS BEEN CHANGED !!!!!!
OutputStreamWriter wr = new OutputStreamWriter(os);
wr.write(requestP);
// Send the request
wr.flush();

Спасибо за ответ. Эрик

2 ответа

Но предполагается, что запросы GET не имеют содержимого... записывая в выходной поток соединений, вы меняете природу запроса на POST. Библиотека очень полезна для определения того, что вы делаете это... документ для getOutputStream явно заявляет: "Метод запроса по умолчанию изменяется на"POST"при вызове этого метода".

Если вам нужно отправить данные на сервер в GET, тогда они должны быть закодированы в параметрах URL обычным способом.

Удалить con.setDoOutput(true); из вашего кода. Тогда запрос веб-сервиса будет нормально работать методом GET

HttpURLConnection по умолчанию использует метод GET. Он будет использовать POST, если setDoOutput(true) был вызван.

Приведенный выше комментарий можно найти по нижеуказанному URL

Android HTTPURLConnection Class

Другие вопросы по тегам