泽西岛。带有数组的POJO返回415不支持的媒体类型

时间:2018-10-26 19:05:41

标签: java jersey

这是我的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中,仍然是同一问题

2 个答案:

答案 0 :(得分:0)

问题似乎出在POJO本身。 SubmissionParticipantDTO在几个数组中具有额外的参数,因此jersey无法处理它。

答案 1 :(得分:0)

按此顺序检查几件事。您说您检查了这些内容,所以我真的认为这可能是GET vs POST。但是无论如何,请再次仔细检查这三个,以防万一:

  1. 确保您已经设置了适当的标题,即Content- Type =“ application / json; charset = utf8”
  2. 确保可以正确反序列化JSON对象,即 注意上下壳体,也要注意 是否是一个字段setDesigner真的是一个(空)数组,而你只是 将其视为常规对象(由于您的原因,我在此强调 该特定数组的命名实践)
  3. 确保您的路由/路径和请求类型(我在那看到@POST)正确。

尽管可能存在某些拼写错误,或者您的JSON对象由于缺少一些必填字段而完全无效,但我想您已经对它进行了仔细检查,因此如果我不得不做出一个疯狂的猜测,我认为是因为您不断发送GET请求而不是POST