Lovesuper
@Lovesuper
pyhon, java, swift программист

[Java, Retrofit] Есть ли способ отправить на сервер несколько полей с одинаковым названием в теле POST?

В разработке клиента используется Retrofit.
Ситуация такая: в теле POST, валидатор на сервере ожидает несколько полей с одинаковым названием в числе многих, например:
  • age: 20
  • name: Vasya
  • place: 1
  • place: 2
  • place: 3

и т.д. При попытке в лоб решить задачу, получается так:
@Multipart
    post("/users")
    void create(
            @ Part("name") String name,
            @ Part("age") String age,
            @ Part("place") List<Integer> place,

Но выходит так, что Retrofit посылает place '1,2,3' вместо того, чтобы отослать вообще отдельными полями place '1' place '2' place '3'. По стечению обстоятельств желательно было бы не (до)-переделывать валидатор на сервере, а привести клиент к "правильному" состоянию. Параметров Place всегда очень разное количество. Были варианты использовать MultiMap, но Retrofit его не принимает, т.к. он не имплементирует нужных интерфейсов (он вообще pojo гугловский). Интересное замечание, что аннотация '@EncodedQuery' дает нужный эффект, но посылает данные не в теле POST, а через query string. Есть предложения по решению?
  • Вопрос задан
  • 2772 просмотра
Пригласить эксперта
Ответы на вопрос 1
@gurinderu
java developer
Дык все правильно ваш Retrofit делает. В таком виде должно положиться List без проблем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы