Como os desenvolvedores do Android recomendam usar a HttpURLConnection
classe, fiquei pensando se alguém pode me fornecer um bom exemplo de como enviar um "arquivo" de bitmap (na verdade, um fluxo de memória) via POST para um servidor HTTP Apache. Não estou interessado em cookies, autenticação ou qualquer coisa complicada, mas só quero ter uma implementação confiável e lógica. Todos os exemplos que eu vi por aqui parecem mais com "vamos tentar isso e talvez funcione".
No momento, eu tenho 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();
}
}
onde showDialog deve apenas exibir um AlertDialog
(no caso de um URL inválido?).
Agora, digamos que eu gere um bitmap da seguinte forma: Bitmap image = this.getBitmap()
dentro de um controle derivado de View
e quero enviá-lo via POST. Qual seria o procedimento adequado para conseguir isso? Quais classes eu preciso usar? Posso usar HttpPost
como neste exemplo ? Em caso afirmativo, como eu construiria o InputStreamEntity
para o meu bitmap? Eu achava revoltante ser necessário primeiro armazenar o bitmap em um arquivo no dispositivo.
Devo também mencionar que eu realmente preciso enviar todos os pixels inalterados do bitmap original para o servidor, para não poder convertê-lo para JPEG.