Android httpPost avec des paramètres et des fichiers
J'ai besoin de télécharger certains de données de serveur PHP.
Je peux faire du post avec les paramètres:
String url = "http://yourserver";
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
nameValuePairs.add(new BasicNameValuePair("user", "username"));
nameValuePairs.add(new BasicNameValuePair("password", "password"));
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpClient.execute(httpPost);
}
Je suis aussi capable de télécharger un fichier:
String url = "http://yourserver";
File file = new File(Environment.getExternalStorageDirectory(),
"yourfile");
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
InputStreamEntity reqEntity = new InputStreamEntity(
new FileInputStream(file), -1);
reqEntity.setContentType("binary/octet-stream");
reqEntity.setChunked(true); //Send in multiple parts if needed
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);
//Do something with response...
}
Mais comment puis-je les mettre ensemble? J'ai besoin de télécharger une image et les paramètres dans un seul post.
Grâce
- l'ajout de la dernière pot augmente la taille juste en .2 mo.
- Putain j'ai regardé après un simple de la paix de code pour télécharger une image, vous monsieur m'a sauvé d'un mal de tête. N'a tout simplement pas comprendre que vous venez de mettre un InputStreamEntity sur elle. Je sais qu'il y a d'autres façons complexes, mais pas ce dont j'avais besoin.
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un multipart http post, comme dans les formulaires HTML. Cela peut être fait avec une bibliothèque.
Voir le post Envoi d'images à l'aide de Http Post pour un exemple complet.
Vous devez utiliser MultipartEntity. Trouvez en ligne et de télécharger ces deux bibliothèques: httpmime-4.0.jar et apache-mime4j-0.4.jar et ensuite vous pouvez l'attacher comme beaucoup de trucs comme souhaité. Ici est un exemple de comment l'utiliser:
et pour le côté serveur, vous pouvez utiliser ces identifiant d'entité noms
myImageFile
,myString
etmyAudioFile
.Cela fonctionne comme un charme pour moi:
Mise à JOUR: Si vous avez besoin d'envoyer des paramètres avec le fichier,
utilisation:
...comme indiqué dans le code ci-dessus. L'un ou l'autre devrait fonctionner, si le serveur que vous essayez de vous connecter n'est pas complètement connus pour vous.
être prudent
MultiPartEntity
etBasicNameValuePair
sont deprected .Donc, ici, est la nouvelle façon de faire! Et vous avez seulement besoin
httpcore.jar(latest)
ethttpmime.jar(latest)
les télécharger à partir de Apache site.