Dopo l'aggiornamento a Ice Cream Sandwich, la mia richiesta POST non funziona più. Prima di ICS, questo funziona bene:HttpURLConnection esegue sempre una richiesta GET invece di una richiesta POST nonostante setDoOutput (true) e 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;
Ho cercato di impostare
connection.setDoOutput(true);
ma non è così opere. La risposta del server è sempre un 405 (metodo non consentito) e il log del server dice che si trattava di una richiesta GET.
L'Android JavaDoc a setRequestMethod dice:
Questo metodo può essere chiamato solo prima della connessione.
Significa che il metodo deve essere invocato prima di url.openConnection()? Come dovrei creare un'istanza HttpURLConnection? Tutti gli esempi che ho visto, lo rendono come descritto sopra.
Spero che qualcuno abbia un'idea del perché invii sempre una richiesta GET invece di un POST.
Grazie in anticipo.
Si utilizza HttpRequest nel thread dell'interfaccia utente? –
No, chiamo il metodo in 'nuova AsyncTask() { \t \t \t @Override \t \t \t protetta booleano doInBackground (finale Void ... params) {// . .. } ' –
Cornelius
La tua risposta si trova in questa domanda: http://stackoverflow.com/questions/9365829/filenotfoundexception-for-httpurlconnection-in-ice-cream-sandwich – Kekoa