android - 如何替换已弃用的 okhttp.RequestBody.create()

标签 android retrofit2 okhttp image-upload

我尝试使用 将图像从 Android 应用程序上传到 Django 服务器改造 2 OkHttp3 .
为此,我曾经创建一个 RequestBody使用以下行的实例:

RequestBody requestImageFile =
                    // NOW this call is DEPRECATED
                    RequestBody.create(
                            MediaType.parse("image/*"),

                            // a File instance created via the path string to the image
                            imageFile
                    );

我在下一个方法调用中使用了前一个实例作为参数:
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part image = MultipartBody.Part.createFormData("image", imageFile.getName(), requestImageFile);

最后,我启动了 Retrofit 界面来完成剩下的工作:
// finally, execute the request
Call<ResponseBody> call = service.upload(image);
call.enqueue(new Callback<ResponseBody>() {
     @Override
     public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            Log.v("Upload", "success");
     }

     @Override
     public void onFailure(Call<ResponseBody> call, Throwable t) {
            Log.e("Upload error:", t.getMessage());
     }
});

几个月前,Android Studio 没有告诉我 create()已弃用。当我现在打开项目时,它告诉我 create()已弃用。有人知道如何解决吗?

最佳答案

只需交换参数

RequestBody.create(MediaType.parse("image/*"), imageFile);


RequestBody.create(imageFile, MediaType.parse("image/*"));

关于android - 如何替换已弃用的 okhttp.RequestBody.create(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58660677/

相关文章:

android - AppWidgetProvider 类中的调用 fragment

java - 如何检查 RXJava 是否完成或从队列中清空

android - 如何以及在哪里进行 Retrofit 调用?

android - 限制Authenticator的重试次数

java - 使用 OkHttp3/Retrofit 添加 cookie 到响应

android - 检查位置(纬度经度)是否在 KML 多边形内

android - 实体名称必须紧跟实体引用中的 '&'

java - AsyncTask 内的确认对话框(警报)

android - 通过改造在请求 header 中发送 Firebase ID token (不是授权 token )

android - 使用 OkHttp、Okio 和 RxJava 下载文件