Depuis que les développeurs d'Android recommander pour utiliser le HttpURLConnection
Je me demandais si quelqu'un pouvait me donner un bon exemple de la façon d'envoyer un "fichier" bitmap (en fait un flux en mémoire) par POST à un serveur HTTP Apache. Je ne suis pas intéressé par les cookies ou l'authentification ou quoi que ce soit de compliqué, mais je veux juste avoir une implémentation fiable et logique. Tous les exemples que j'ai vus ici ressemblent plus à des "essayons ceci et peut-être que ça marchera".
Pour l'instant, j'ai ce code :
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();
}
}
où showDialog devrait juste afficher un AlertDialog
(en cas d'URL invalide ?).
Maintenant, disons que je génère un bitmap comme ceci : Bitmap image = this.getBitmap()
à l'intérieur d'un contrôle dérivé de View
et je veux l'envoyer par POST. Quelle serait la procédure à suivre pour réaliser une telle chose ? Quelles classes dois-je utiliser ? Puis-je utiliser HttpPost
comme dans cet exemple ? Si oui, comment dois-je construire le InputStreamEntity
pour mon bitmap ? Je trouverais révoltant de devoir d'abord stocker le bitmap dans un fichier sur l'appareil.
Je dois également mentionner que j'ai vraiment besoin d'envoyer chaque pixel non modifié du bitmap d'origine au serveur, et que je ne peux donc pas le convertir en JPEG.