2010-11-22 8 views
0

Comment envoyer un grand paramètre de post (> 5 Mo) (entre autres paramètres de poste) dans Android?Envoyer un grand message param dans Android

J'utilise actuellement org.apache.http.client.methods.HttpPost et une liste de BasicNameValuePair pour envoyer les post-params.

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(someURL); 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
nameValuePairs.add(new BasicNameValuePair("param1", "value1")); 
nameValuePairs.add(new BasicNameValuePair("param2", hugeValue)); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
httpclient.execute(httppost); 

hugeValue est une chaîne très importante que je voudrais lire un InputStream et envoyer comme je l'ai lu. Comment puis-je faire ceci?

+2

Vous aurez probablement à court de RAM aller dans cette voie, en particulier sur les petits téléphones. Vous devrez peut-être utiliser le contenu 'HttpUrlConnection' de niveau inférieur du paquet' java.net'. – CommonsWare

+0

C'est exactement le problème. Je manque de RAM. – hpique

+0

Si vous contrôlez le côté serveur, vous pouvez écrire votre chaîne à stream, gzip (java.util.zip) et upload en binaire. Certaines bibliothèques externes comme apache.mime et commons.io seraient utiles. –

Répondre

5

CommonsWare a raison. HttpUrlConnection et l'écriture directe dans le flux de sortie résoudra votre problème de mémoire. Je l'ai utilisé dans ma propre application pour télécharger 10 Mb et plus de données d'image.

Un bon exemple selon votre type de demande de poste est: http://www.java.happycodings.com/Other/code21.html