Poiché gli sviluppatori Android consigliano di utilizzare la HttpURLConnection
classe, mi chiedevo se qualcuno possa fornirmi un buon esempio su come inviare un "file" bitmap (in realtà un flusso in memoria) tramite POST a un server HTTP Apache. Non mi interessano i cookie o l'autenticazione o nulla di complicato, ma voglio solo avere un'implementazione affidabile e logica. Tutti gli esempi che ho visto qui intorno sembrano più "proviamo questo e forse funziona".
In questo momento, ho questo codice:
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();
}
}
dove showDialog dovrebbe solo visualizzare un AlertDialog
(in caso di un URL non valido?).
Ora, diciamo che generi una bitmap così: Bitmap image = this.getBitmap()
all'interno di un controllo derivato da View
e voglio inviarla tramite POST. Quale sarebbe la procedura corretta per ottenere una cosa del genere? Quali classi devo usare? Posso usare HttpPost
come in questo esempio ? Se è così, come dovrei costruire il InputStreamEntity
per la mia bitmap? Troverei rivoltante richiedere prima di memorizzare la bitmap in un file sul dispositivo.
Devo anche menzionare che ho davvero bisogno di inviare ogni pixel inalterato della bitmap originale al server, quindi non posso convertirlo in JPEG.