Je vais supposer que vous connaissez le chemin et le nom de fichier de l'image que vous souhaitez télécharger. Ajoutez cette chaîne à votre NameValuePair
utilisation image
comme nom de clé.
L'envoi d'images peut être effectué à l'aide des bibliothèques HttpComponents . Téléchargez le dernier binaire HttpClient (actuellement 4.0.1 ) avec le package de dépendances et copiez apache-mime4j-0.6.jar
-le httpmime-4.0.1.jar
dans votre projet et ajoutez-les à votre chemin de construction Java.
Vous devrez ajouter les importations suivantes à votre classe.
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
Vous pouvez maintenant créer un MultipartEntity
pour joindre une image à votre demande POST. Le code suivant montre un exemple de procédure:
public void post(String url, List<NameValuePair> nameValuePairs) {
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
try {
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
for(int index=0; index < nameValuePairs.size(); index++) {
if(nameValuePairs.get(index).getName().equalsIgnoreCase("image")) {
// If the key equals to "image", we use FileBody to transfer the data
entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File (nameValuePairs.get(index).getValue())));
} else {
// Normal string data
entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue()));
}
}
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost, localContext);
} catch (IOException e) {
e.printStackTrace();
}
}
J'espère que cela vous aide un peu dans la bonne direction.
FileBody
votre type Mime souhaité. Ex:new FileBody(new File (nameValuePairs.get(index).getValue()), "image/jpeg")
Depuis
MultipartEntity
est obsolète . Veuillez consulter le code ci-dessous.la source
La bibliothèque loopj peut être utilisée directement à cette fin:
http://loopj.com/
la source
J'ai beaucoup de mal à essayer d'implémenter la publication d'une image du client Android sur le servlet en utilisant httpclient-4.3.5.jar, httpcore-4.3.2.jar, httpmime-4.3.5.jar. J'ai toujours une erreur d'exécution. J'ai découvert qu'en gros, vous ne pouvez pas utiliser ces jars avec Android car Google utilise une ancienne version de HttpClient sous Android. L'explication est ici http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html . Vous devez obtenir le jar httpclientandroidlib-1.2.1 à partir de la bibliothèque Android http-client . Modifiez ensuite vos importations de or.apache.http.client en ch.boye.httpclientandroidlib. J'espère que cela t'aides.
la source
Je fais généralement cela dans le thread qui gère la réponse json:
Si vous devez effectuer des transformations sur l'image, vous voudrez créer un dessinable au lieu d'un bitmap.
la source