Как я могу загрузить изображение на сервер, используя Android и Retrofit? - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь загрузить изображение на сервер с помощью Retrofit, но получаю ошибку HTTP 400. Я знаю, что эта ошибка означает, что вызов не был выполнен правильно, но я не знаю, когда я делаю неправильно. Мне нужно загрузить только одно изображение.

Я попытался добавить заголовки multipart / form-data, а также content-type: image / jpeg, а также без него, но он продолжает выдавать ошибку 400.

Этот код в интерфейсе:

@Multipart
@POST("https://myweb.com/endpoint")
Observable<DefaultResponse> uploadUserImageRx(
    @Part MultipartBody.Part image
);

А вот и звонок:

var file = // initialized file here

var filePart = MultipartBody.Part.createFormData("file",file.getName(),   RequestBody.create(MediaType.parse("image/jpeg"), file))

unsubscribeUploadPhoto()
uploadPhotoSubscription = MyApiClient.getApi()
    .uploadUserImageRx(filePart)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(object : SubscriberAdapter<DefaultResponse>() 
        {
          //Notify everything went well.
        })

Я ожидаю загрузки фотографии, но вместо этого получаю эту ошибку.

Требования к конечной точке:

Авторизация (заголовок) в виде строки

1 Ответ

0 голосов
/ 28 мая 2019

Эта ошибка означает, что вы неправильно подключили заголовки, так как я думаю, что должен быть заголовок, подобный токену доступа.проверьте, есть ли что-то подобное, затем реализуйте свой API, как показано ниже.

@Multipart
@POST("https://myweb.com/endpoint")
Observable<DefaultResponse> uploadUserImageRx(
    @Header("Authorization") String authorization,  
    @Part MultipartBody.Part image
); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...