Android 6 (Marshmallow) 上的 org.apache.http.entity.FileEntity 弃用:综合指南
随着 Android Marshmallow 的发布,古老的 org.apache.http.entity.FileEntity 类已被弃用。这使得开发人员寻找处理文件上传的替代方法。
弃用通知
以下通常用于文件上传的代码部分将不再在 Android 上运行6 及以上:
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
构建的-Java中的HttpURLConnection类可以用于文件上传,但其API比较冗长,需要更多的代码行。以下是使用 HttpURLConnection 的示例:
// Implement your own HTTP file upload logic here
适用于 Android 的 Apache HttpClient
Apache 为 Android 提供了一个单独的 HttpClient 库,其中包括 FileEntity 的替代品。使用此库需要额外的依赖项,但它提供了熟悉的 API 来处理文件上传。
OkHttp
OkHttp 是一个流行的用于 HTTP 网络的第三方库安卓。它具有干净简洁的 API,可以轻松处理文件上传。以下是使用 OkHttp 的 MultipartBuilder 的示例:
// Implement your own OkHttp file upload logic here
其他注意事项
CompileSdkVersion
将compileSdkVersion更改为21将允许您的应用程序使用 FileEntity 进行编译,但是解决其弃用的根本原因非常重要。
替代库
除了上面讨论的选项之外,还有其他库可用于 Android 中的 HTTP 网络,例如 Volley、Retrofit 和 AndroidAsync。这些库提供各种功能和优势,具体取决于您的具体要求。
以上是Android 6 及更高版本中已弃用的 org.apache.http.entity.FileEntity 的最佳替代品是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!