2016-02-01 3 views
1

Я хотел бы отправить HTTP-запрос с помощью метода GET, но я не могу установить метод GET. Вот мой код:Android HttpURLConnection set GET Метод запроса

try { 
       URL url = new URL(path); 
       conn = (HttpURLConnection) url.openConnection(); 

       conn.setReadTimeout(10000); 
       conn.setConnectTimeout(15000); 
       conn.setRequestMethod("GET"); 
       conn.setDoInput(true); 
       conn.setDoOutput(true); 
Uri.Builder builder = new Uri.Builder() 
         .appendQueryParameter("p1", "123") 
         .appendQueryParameter("p2", "123"); 
       String query = builder.build().getEncodedQuery(); 
       OutputStream os = conn.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(
         new OutputStreamWriter(os, "UTF-8")); 
       writer.write(query); 
       writer.flush(); 
       writer.close(); 
       os.close(); 

       conn.connect(); 
       Log.e("ERROR", conn.getResponseMessage()); 
       Log.e("ERROR", conn.getRequestMethod()); 
       Log.e("ERROR", String.valueOf(conn.getResponseCode())); 

      } catch (Exception e) { 
       Log.e("ERROR", e.getMessage()); 
      } 

В коде я поставил GET метод, но на бревне, метод запроса POST:

02-01 16:48:54.766 23799-23831/? E/ERROR﹕ Method Not Allowed 
02-01 16:48:54.766 23799-23831/? E/ERROR﹕ POST 
02-01 16:48:54.766 23799-23831/? E/ERROR﹕ 405 

Что такое проблема?

+0

Пожалуйста, покажите вторую половину часть вашего 'url' –

ответ

7

проблема

conn.setDoOutput(true); 

когда установлен истинный метод запроса изменяется на POST, так как GET или DELETE не может иметь тела запроса

+1

да, вы правы! Теперь он работает с методом GET. Благодаря! –

+0

добро пожаловать – Blackbelt

+0

Другой вопрос пришел сейчас. Если я удалю команду setDoOutput, будут отправляться данные GET. Говорят, метод не поддерживает тело запроса: GET. Как я могу привязать данные для отправки? –

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