Джерси. POJO с массивами возвращает 415 неподдерживаемого типа носителя

Вот мой POJO

public class AllParticipantsDTO {

private List<SubmissionParticipantDTO> hairStylists;
private List<SubmissionParticipantDTO> mds;
private List<SubmissionParticipantDTO> muas;
private List<SubmissionParticipantDTO> phs;
private List<SubmissionParticipantDTO> setDesigner;
private List<SubmissionParticipantDTO> wardrobeStylists;

Которая содержит массивы:

public class SubmissionParticipantDTO {

private String firstName;
private String lastName;
private CountryDto country;
private String city;
private Boolean me;


@POST
@Path("init")
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
public Response initSubmission(final AllParticipantsDTO allParticipantsDTO) {

Я не понимаю, почему я получаю 415. Я также попытался добавить jersey-media-json-jackson в pom, все та же проблема

Вы в шапке ставите в шапку application/json?

Nicholas K 26.10.2018 21:09

конечно, я использую Postman для тестирования и тела, например {"hairStylists": [], "mds": [], "muas": [], "phs": [], "setDesigner": [], "гардеробStylists" ": []}

Andrii Fedorenko 26.10.2018 21:11

У вас есть ошибки в консоли / журналах? В идеале, если вы устанавливаете правильный тип контента, этого не должно происходить.

Nicholas K 26.10.2018 21:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
195
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Похоже, проблема была в самом POJO. SubmissionParticipantDTO имел дополнительный параметр в нескольких массивах, поэтому jersey не мог с ним справиться.

Ответ принят как подходящий

Вот несколько вещей, которые нужно проверить в этом порядке. Вы говорите, что проверили эти вещи, поэтому я действительно думаю, что это, вероятно, GET vs POST. Но в любом случае, на всякий случай еще раз проверьте эти три:

  1. Убедитесь, что вы уже установили соответствующий заголовок, то есть Content- Тип = "приложение / json; charset = utf8"
  2. Убедитесь, что объект JSON можно правильно десериализовать, т.е. обратите внимание на нижний и верхний кожух, а также обратите внимание действительно ли поле setDesigner является (пустым) массивом, и вы просто рассматривать его как обычный объект (я подчеркиваю это в связи с вашим практика именования этого конкретного массива)
  3. Убедитесь, что ваш маршрут / путь И тип запроса (я вижу там @POST) правильный.

Хотя может быть какая-то орфографическая ошибка или ваш объект JSON просто недействителен, потому что в нем отсутствуют некоторые обязательные поля, я думаю, вы уже дважды его проверили, поэтому если бы мне пришлось сделать дикую догадку, я думаю, это потому, что вы продолжаете отправлять, например, запрос GET вместо POST

Другие вопросы по теме