首頁 >Java >java教程 >如何從已棄用的「org.apache.http.entity.FileEntity」遷移到 Android 中的檔案上傳?

如何從已棄用的「org.apache.http.entity.FileEntity」遷移到 Android 中的檔案上傳?

Susan Sarandon
Susan Sarandon原創
2024-11-26 15:12:10989瀏覽

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

升級到API 23:解決org.apache.http.entity.FileEntity 的棄用問題

隨著Android 6 (Marshmallow)的出現),org.apache.http 庫已被棄用。這給依賴 FileEntity 類別進行文件上傳的開發人員帶來了挑戰。

過時的檔案上傳程式碼

以下程式碼片段舉例說明了已棄用的方法:

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());

替代方案解決方案方案

FileEntity類別的一些替代方案包括:

  • HttpURLConnection: 雖然 HttpURLConnection 為文件上傳提供了本機解決方案,但其 API 可能相當大更複雜。
  • Android 版 Apache HttpClient:這是專為 Android 量身訂製的 HttpClient 的獨立包裝。
  • OkHttp:此推薦程式庫提供了用於檔案上傳的簡化 API。

OkHttp檔案上傳解決方案

使用OkHttp,可以實現類似的檔案上傳功能使用以下程式碼:

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();

此>

此解決方案允許採用更簡潔且易於管理的檔案上傳方法,同時遵守最新的Android 指南。

以上是如何從已棄用的「org.apache.http.entity.FileEntity」遷移到 Android 中的檔案上傳?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn