首页 > Java > java教程 > 如何从已弃用的'org.apache.http.entity.FileEntity”迁移到 Android 中的文件上传?

如何从已弃用的'org.apache.http.entity.FileEntity”迁移到 Android 中的文件上传?

Susan Sarandon
发布: 2024-11-26 15:12:10
原创
1038 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板