Я разрабатываю приложение, в котором пользователь должен выбрать любое количество стран из списка, и я должен отправить выбранные имена через составную часть.
Я не загружаю какой-либо файл вместе со String [], но не существует маршрута для загрузки информации, если она не является составной, и я не могу сказать, как работает веб-сервер.
Я попытался просто отправить его как массив, ArrayList и JsonArray как таковые:
@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries);
Я также попытался использовать это решение, но я либо неправильно его понял, либо оно не работает. Вот код, который я пытался использовать:
ArrayList<String> countries = CountryManager.getInstance().getSelectedCountryIds();
RequestBody requestBody;
LinkedHashMap<String, RequestBody> hashMap = new LinkedHashMap<>();
for(int i = 0; i < countries.size(); i++) {
requestBody = RequestBody.create(MediaType.parse("text/plain"), countries.get(i));
hashMap.put("countries["+i+"]", requestBody);
}
И соответственно изменив метод дооснащения:
@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @PartMap() Map countries);
Однако во всех попытках я получал ошибку retrofit.RetrofitError: Тело детали не должно быть нулевым.
Я также упомянул, что в журнале изменений для модернизации упоминается «Новое: поддержка итераций и параметров массива @Part
с использованием MultipartBody.Part
OkHttp», но после некоторого покопания я обнаружил, что данный пример довольно сбивает с толку до такой степени, что я не уверен, как реализовать его в моем коде и не смог найти учебник, в котором даже упоминалась бы отправка массивов в multipart.
Такое просто невозможно?