泽西的Moxy JAXB json映射返回415

时间:2014-02-13 09:31:37

标签: java json jaxb jersey moxy

我有一个带有POST方法处理程序的Jersey2服务

@Path("register")
public class RegisterResource {
    @XmlRootElement
    class PostUserParams {
        String username;
        String password;

        public PostUserParams() {}
    }


    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public postData(PostUserParams user) {
    ...
    }
}

但是我无法让POST请求工作 - 我已经获得了415 Unsupported Media Type。我很确定

  • 我在请求中有正确​​的Content-Type
  • moxy,jaxb和所有jar和依赖项已正确部署
  • 我甚至尝试为球衣添加一些moxy配置,但根据文档似乎没有必要
  • 其他不涉及JSON到Java转换的请求正常工作
  • 请求中的JSON是正确的

是什么给出了?

1 个答案:

答案 0 :(得分:3)

经过大量的挖掘和调试(Jersey调试让我头晕目眩!)我发现了一个异常,不幸的是这些异常被吞没了。

在这种情况下,bean类PostUserParams必须具有无参数构造函数。我有,但该类不是静态的,因此Java不会这样对待它。

解决方案:将PostUserParams设为静态。或者把它放在资源类之外。