Android Retrofit Загрузить файл с авторизацией Body

Я использую модификацию для подключения к серверу, которому нужен токен авторизации в POST Data. Пример Для запроса:

https://adress/inboxes
POST data:
token=jasdf807gb123uy40bviubva08sdyv123&message_id=1&

Я использую такой метод, и он отлично работает:

@POST("/inboxes")
    Call<InboxesResponse> getInbox(@Header("Authorization") String authorization, @Header("Content-Type") String contentType, @Body RequestBody body);

Я помещаю токен и другие параметры в RequestBody:

RequestBody body =
                RequestBody.create(MediaType.parse("text/plain"), text.toString());

Все это прекрасно работает. Но я не могу понять, как работать с методом загрузки файлов:

Example:
https://adress/fileUpload
POST data:
token=jasdf807gb123uy40bviubva08sdyv123
File body

Так что мне нужно использовать MultipartBody.Part file загрузить файл, но как объединить MultipartBody с RequestBody, который содержит токен? Или как это сделать правильно? Я не совсем понимаю..

2 ответа

Решение

Хорошо, ответ был:

 @Multipart
    @POST("/fileUpload")
    Call<ResponseBody> uploadFile(@Header("Authorization") String authorization,
                                  @Part("token") RequestBody token,
            @Part MultipartBody.Part file
    );

Этот пример сработал для меня.

      @Multipart
@Headers("Accept: application/json")
@POST("reports/new")
suspend fun registerReport(@Header("Authorization") access_token:String,
                           @Part("description") description: RequestBody,
                           @Part photo: MultipartBody.Part
) : RegisterResponse

Как видите, не обязательно, чтобы access_token имел тип RequestBody, вы можете передать заголовок, и его тип может быть String.

Другие вопросы по тегам