我有一个带有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不支持的媒体类型。我很确定


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


是什么赋予了?

最佳答案

经过大量的挖掘和调试(Jersey调试使我感到头晕!),我发现一个异常被不幸地吞入了这些库中。

在这种情况下,Bean类PostUserParams必须具有无参数构造函数。我有,但是该类不是静态的,因此Java不会将其视为此类。

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

09-27 15:05