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.