Desde la actualización a Ice Cream Sandwich, mi solicitud POST ya no funciona. Antes del ICS, esto funciona bien:HttpURLConnection realiza siempre una solicitud GET en lugar de una solicitud POST a pesar de setDoOutput (true) y 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;
He tratado de establecer
connection.setDoOutput(true);
pero no lo hace obras. La respuesta del servidor siempre es un 405 (Método no permitido) y el registro del servidor dice que fue una solicitud GET.
El androide JavaDoc a setRequestMethod dice:
Este método sólo puede ser llamado antes de que se establezca la conexión.
¿Significa que el método debe invocarse antes de url.openConnection()? ¿Cómo debería crear una instancia de HttpURLConnection? Todos los ejemplos que he visto lo hacen como se describió anteriormente.
Espero que alguien tenga una idea de por qué siempre envía una solicitud GET en lugar de una POST.
Gracias de antemano.
¿Utiliza HttpRequest en el hilo de UI? –
No, llamar al método en 'nueva AsyncTask() { \t \t \t @ Override \t \t \t protegida de Boole doInBackground (última Vacío ... params) {// . .. } ' –
Cornelius
Su respuesta se encuentra en esta pregunta: http://stackoverflow.com/questions/9365829/filenotfoundexception-for-httpurlconnection-in-ice-cream-sandwich – Kekoa