2010-10-21 4 views
3

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

Вот отрывок из моего кода:

// 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(); 

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

ответ

8

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

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

+0

Великий, это работает! Большое спасибо за ваш быстрый ответ. Я допустил ошибку: я повторно использовал старый код, который запрашивал сервер с фрагментом выше. Этот сервер не против, если запрос использует метод POST или GET! – Eric

4

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

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

выше комментарий может быть найден в пределах ниже URL

Android HTTPURLConnection Class

 Смежные вопросы

  • Нет связанных вопросов^_^