Как заменить устаревший okhttp.RequestBody.create () - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь загрузить изображение из приложения Android на сервер Django, используя Retrofit 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() устарел. Кто-нибудь знает, как это исправить?

1 Ответ

2 голосов
/ 01 ноября 2019

Просто поменяйте местами параметры от

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

до

RequestBody.create(imageFile, MediaType.parse("image/*"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...