我有一个带有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设为静态。或将其放在资源类之外。