L'envoi de fichiers à l'aide de POST avec HttpURLConnection

Puisque les développeurs Android recommander d'utiliser le HttpURLConnection de classe, je me demandais si quelqu'un peut me fournir un bon exemple de comment envoyer une image bitmap "fichier" (en fait un flux de mémoire) par la POSTE à un serveur HTTP Apache. Je ne suis pas intéressé dans les cookies ou d'authentification ou quoi que ce soit compliqué, mais je veux juste avoir un support fiable et logique de mise en œuvre. Tous les exemples que j'ai vu ici ressemblent plus à des "nous allons essayer cela et peut-être que ça marche".

Droit maintenant, 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 faut juste afficher une AlertDialog (dans le cas d'une URL non valide?).

Maintenant, disons que je génère une image bitmap comme suit: Bitmap image = this.getBitmap() l'intérieur d'un contrôle dérivé de View et je veux l'envoyer par la POSTE. Quelle serait la procédure à suivre pour réaliser une telle chose? Quels cours dois-je utiliser? Puis-je utiliser HttpPost comme dans cet exemple? Si oui, comment pourrais-je construire le InputStreamEntity pour mon bitmap? Je trouve ça révoltant d'être tout d'abord nécessaire de stocker l'image dans un fichier sur le périphérique.


Je devrais aussi mentionner que j'ai vraiment besoin d'envoyer tous les inchangée pixel de l'image d'origine sur le serveur, donc je ne peux pas le convertir en JPEG.

InformationsquelleAutor Mihai Todor | 2012-08-01