Я хочу отправить модель Retrofit, которая содержит несколько стандартных полей и файлов, закодированных в формате BASE64.Я знаю, что это неправильный способ отправки файлов, но у меня есть сервер без внутреннего разработчика.
Итак, когда я отправляю, например, 3 файла в формате PDF по 20 МБ каждый, я запускаю память, исключение, подобное этому
Failed to allocate a 30544558 byte allocation with 2085152 free bytes and 26MB until OOM
Я понял, что это проблема вРазбор строки base64, который у меня уже есть в памяти, чтобы Json бросил GSON.Я пытался создать для создания пользовательского адаптера, в соответствии с исключением Retrofit OutOfMemory при загрузке файлов в BASE64 на сервер , но в случае большой модели не хватает идей.Что решит эту проблему с вставкой большой строки в JSON?Может быть, я могу использовать другие адаптеры, а не GSON?
Модель поля документов в Json и вся модель
data class Document(
var base64: MutableList<String?>,
var mime: String?,
var name: String?
)
data class OrderMainModel(
var INN: String?,
var KPP: String?,
var addressOfEstateObject: String?,
var addressOfGardenObject: String?,
var agentFathersName: String?,
var agentFirstName: String?,
var agentLastName: String?,
var approximateSizeOfEstateObject: Double?,
var approximateSizeOfOKS: Double?,
var area: String?,
var bankAccountNumber: Int?,
var companyAddress: String?,
var companyName: String?,
var documents: List<Document?>
}
Метод дооснащения
@Streaming
@POST("/api/order/")
fun makeOrder(@Header("Authorization") token: String, @Body order: OrderMainModel): Single<Response<PhoneNumberResponse>>