2016-05-11 2 views
1
URL url = new URL("http://myserver.com/myendpoint"); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
//connection.setRequestMethod("POST") <- this didn't help either 
connection.setDoOutput(true); 
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); 
out.write("string=test"); 
out.close(); 
connection.close() 

Код выше работает на рабочем столе виртуальной машины Java, посылает запрос на запись, разобранную на стороне сервера успешно с ответом 200, однако на андроид, метод запроса остается GET (да, я проверено, что оно ложно) и приводит к исключению 404. Официальные документы говорят, что установка doOutput на истинные триггеры устанавливает метод запроса POST, но это не похоже на это.метод HttpURLConnection всегда GET на андроид

+0

вы дали разрешение на интернет? 404 означает, что страница не работает! может быть неправильный путь –

+0

Да разрешение на подключение к Интернету предоставляется –

+0

404 не относится к GET или POST. Это относится только к URL. –

ответ

4

404 не является исключением. Это код состояния HTTP, возвращаемый сервером, на который вы отправляете запрос, и это означает, что URL-адрес, на который вы делаете запрос, не найден. Это не имеет никакого отношения к установке POST или нет.

Вещи, чтобы проверить:

  • Если URL вы делаете запрос на это право.
  • Если на сервере есть контроллер POST/обработчик, сопоставленный с URL-адресом, на который вы делаете запрос.
  • Спросите у парня, который разрабатывает сервер, если он обращается с делами правильно, если он отправляет правильные коды ответов для соответствующих сценариев.

Дополнительная информация: если URL-адрес зарегистрирован в службе, но запрос POST не разрешен, вы получите код ответа 415.

+0

Я не глуп, я знаю, что такое 404, но java оставляет исключение FileNotFound на 404. И снова ** тот же код работает на рабочем столе **, поэтому ** с проблемой нет ** –

+0

@ ÁbrahámEndre Tim Castelijns отвечает на эту причину, вы написали «исключение 404» в своем ответе. Никто не оскорбляет вас, что вы глупы. – mob41

+1

@ ÁbrahámEndre check http://stackoverflow.com/questions/35605624/adnroid-httpurlconnection-filenotfoundexception-connect-to-http-and-pass-params или http://stackoverflow.com/questions/18354305/android-http- url-connection-throwing-file-not-found-exception-at-getinputstream, исключение FileNotFound выбрано потому, что outputfilestream не может быть создан из-за 404 –

0

При отправке данных на сервер, я устанавливаю некоторый дополнительный заголовок запроса:

String query = "string=test"; 
URL url = new URL("http://myserver.com/myendpoint"); 
HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
connection.setDoOutput(true); 
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Accept-Charset", "UTF-8"); 
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
connection.setFixedLengthStreamingMode(query.getBytes("UTF-8").length); 
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); 
out.write(query); 

Но как это было предложено, 404 исключения обычно означает, что в конечной точке, вы пытаетесь получить доступ, ISN» t доступно.

0

Попробуйте:

HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
 
     connection.setRequestMethod("GET");

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