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/

相关文章:

java - 如何在按钮可见时剪切 TextView 的一部分

android - 创建自己的 LiveWallpaperPreview?

android - 创建改造服务类 Kotlin

android - 改造2错误: NetworkOnMainThreadException

android - 无法记录某些行

android - FCM(Firebase 云消息传递)发送到多个设备

android - Android 中的 SVG 支持

android - 将它与用于 android 搜索功能的 Rx-Java 一起使用时如何停止多个改造调用?

android - 我的应用程序在 Android 11 上崩溃,在 okhttp3.OkHttpClient 出现 : java. lang.ExceptionInInitializerError

java - Java 11 上的 SocketTimeout,但 Java 8 上没有