Po aktualizacji do Ice Cream Sandwich moje żądanie POST już nie działa. Przed ICS, to działa prawidłowo:HttpURLConnection wykonuje zawsze żądanie GET zamiast żądania POST pomimo setDoOutput (true) i setRequestMethod ("POST")
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;
Próbowałem ustawić
connection.setDoOutput(true);
ale to nie działa. Odpowiedź serwera to zawsze 405 (metoda niedozwolona), a dziennik serwera mówi, że było to żądanie GET.
Android JavaDoc do setRequestMethod mówi:
Metoda ta może być wywołana tylko zanim połączenie zostanie wykonane.
Czy to oznacza, że metoda musi zostać wywołana przed url.openConnection()? Jak utworzyć instancję HttpURLConnection? Wszystkie przykłady, które widziałem, są takie, jak opisano powyżej.
Mam nadzieję, że ktoś ma pomysł, dlaczego zawsze wysyła żądanie GET zamiast POST.
Z góry dziękuję.
Czy używasz HttpRequest w wątku interfejsu użytkownika? –
Nie wzywam Sposób 'nowej AsyncTask() { \t \t \t @Override \t \t \t chroniony Boolean doInBackground (końcowe pustkę ... params) { //. .. } ' –
Cornelius
Twoja odpowiedź znajduje się w tym pytaniu: http://stackoverflow.com/questions/9365829/filenotfoundexception-for-httpurlconnection-in-ice-cream-sandwich – Kekoa