Maison >Java >javaDidacticiel >Comment migrer depuis « org.apache.http.entity.FileEntity » obsolète pour les téléchargements de fichiers sous Android ?

Comment migrer depuis « org.apache.http.entity.FileEntity » obsolète pour les téléchargements de fichiers sous Android ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 15:12:10974parcourir

How to Migrate from Deprecated `org.apache.http.entity.FileEntity` for File Uploads in Android?

Mise à niveau vers l'API 23 : remédier à la dépréciation de org.apache.http.entity.FileEntity

Avec l'avènement d'Android 6 (Marshmallow ), la bibliothèque org.apache.http est obsolète. Cela pose un défi aux développeurs qui s'appuient sur la classe FileEntity pour les téléchargements de fichiers.

Code obsolète pour le téléchargement de fichiers

L'extrait de code suivant illustre l'approche obsolète :

HttpClient httpClient = new DefaultHttpClient();
File file = new File(attr.Value);
String url = server_url;
HttpPost request = new HttpPost(url);
FileEntity fileEntity = new FileEntity(file, "image/png");
request.setEntity(fileEntity);
HttpResponse response = httpClient.execute(request);
String output = getContent(response.getEntity().getContent());

Alternative Solutions

Certaines alternatives à la classe FileEntity incluent :

  • HttpURLConnection : Bien que HttpURLConnection fournisse une solution native pour les téléchargements de fichiers, son API peut être considérablement plus complexe.
  • Apache HttpClient pour Android : Il s'agit d'un package indépendant de HttpClient spécialement conçu pour Android.
  • OkHttp : Cette bibliothèque recommandée offre une API simplifiée pour les téléchargements de fichiers.

Solution OkHttp pour le téléchargement de fichiers

Utilisation OkHttp, une fonctionnalité de téléchargement de fichiers similaire peut être obtenue avec le code suivant :

OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder()
        .setType(MultipartBody.FORM)
        .addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/png"), file))
        .build();
Request request = new Request.Builder()
        .url(server_url)
        .post(requestBody)
        .build();
Response response = client.newCall(request).execute();
String result = response.body().string();

Cette solution permet une approche plus concise et gérable des téléchargements de fichiers tout en respectant les dernières directives Android.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Java Stream.distinct()Article suivant:Java Stream.distinct()