Como os desenvolvedores do Android recomendam usar a HttpURLConnectionclasse, 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 Viewe quero enviá-lo via POST. Qual seria o procedimento adequado para conseguir isso? Quais classes eu preciso usar? Posso usar HttpPostcomo neste exemplo ? Em caso afirmativo, como eu construiria o InputStreamEntitypara 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.