Dado que los desarrolladores de Android recomiendan usar la HttpURLConnection
clase, me preguntaba si alguien puede proporcionarme un buen ejemplo sobre cómo enviar un "archivo" de mapa de bits (en realidad un flujo en memoria) a través de POST a un servidor HTTP Apache. No me interesan las cookies, la autenticación ni nada complicado, pero solo quiero tener una implementación confiable y lógica. Todos los ejemplos que he visto por aquí se parecen más a "intentemos esto y tal vez funcione".
En este momento, tengo este código:
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL("http://example.com/server.cgi");
urlConnection = (HttpURLConnection) url.openConnection();
} catch (Exception e) {
this.showDialog(getApplicationContext(), e.getMessage());
}
finally {
if (urlConnection != null)
{
urlConnection.disconnect();
}
}
donde showDialog solo debe mostrar un AlertDialog
(en caso de una URL no válida?).
Ahora, digamos que genero un mapa de bits como este: Bitmap image = this.getBitmap()
dentro de un control derivado de View
y quiero enviarlo a través de POST. ¿Cuál sería el procedimiento adecuado para lograr tal cosa? ¿Qué clases necesito usar? ¿Puedo usar HttpPost
like en este ejemplo ? Si es así, ¿cómo construiría el InputStreamEntity
para mi mapa de bits? Me resultaría repugnante que se requiera almacenar primero el mapa de bits en un archivo en el dispositivo.
También debo mencionar que realmente necesito enviar cada píxel inalterado del mapa de bits original al servidor, por lo que no puedo convertirlo a JPEG.