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