В настоящее время мы загружаем файлы (Видео, Аудио, Текст и т. Д. c ..), конвертируя String bytes
в простое JSON, включая некоторые другие значения с их парами ключ-значение. Как показано ниже:
Некоторые значения заголовка:
{
"header": {
"geoDate": {
"point": {
"longitude": 77.56246948242188,
"latitude": 12.928763389587403
},
"date": "2020-02-25T18:26:00Z"
},
"version": "1.35.00.001",
"businessId": "178"
}
}
и информация о файлах:
JSONObject data = new JSONObject();
data.put("name", params.name);
data.put("mimeType", params.mimeType);
data.put("fileSize", params.fileSize);
data.put("inputData", params.data);
requestJSON.put("data", data);
Здесь params.data
- это простое преобразование байтов String bytes = Base64.encodeToString(bos.toByteArray(), Base64.DEFAULT);
Это работает, но мы хотим сделать это через Retrofit, отправив файлы через MultiPart на сервер, что также улучшит производительность. Но проблема в том, как это было в структуре JSON, сервер не может изменить свою программу, и мы (приложение) должны только сделать что-то, что отправляет файл, используя Retrofit Multipart, включая другие значения и ключи (также inputData
) .
Я ищу способ сделать это. И мне интересно, можем ли мы также отправлять, сервер должен изменить что-либо для структуры API, например, в настоящее время принимает строку для байтов, и мы собираемся изменить ее на файл для inputData
.