После обновления до Ice Cream Sandwich мой POST-запрос больше не работает. До ICS это работало нормально :
try {
final URL url = new URL("http://example.com/api/user");
final HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(false);
connection.setDoInput(true);
connection.setRequestProperty("Content-Length", "0");
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
Log.w(RestUploader.class.getSimpleName(), ": response code: " + connection.getResponseMessage());
} else {
final BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
final String line = reader.readLine();
reader.close();
return Long.parseLong(line);
}
} catch (final MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (final ProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (final IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return -1;
. Я пытался установить
connection.setDoOutput(true);
, но это не работает. Ответ сервера всегда представляет собой 405 (Метод не разрешен ), а в журнале сервера указано, что это был запрос GET.
В Android JavaDoc для setRequestMethod указано:
Этот метод можно вызывать только до установления соединения.
Означает ли это, что метод должен вызываться до url.openConnection ()? Как создать экземпляр HttpURLConnection? Все примеры, которые я видел, делайте так, как описано выше.
Надеюсь, у кого-то есть идея, почему он всегда отправляет запрос GET вместо POST.
Заранее спасибо.