Jersey 2.27无法处理POST

时间:2018-06-02 23:40:04

标签: java rest jersey jersey-2.0

我是Jersey的新手,并且一直在尝试为一个简单的POST REST资源实现一个Student处理程序,该资源由一个名称和一个CIP组成,这是另一个字符串。我正在使用Tomcat 8.5:

public class StudentResource {

    String m_name;
    String m_cip;

    public StudentResource(String p_name, String p_cip) { 
        m_name = p_name;
        m_cip = p_cip;
    }

    public String getName() {
        return m_name;
    }

    public void setName(String p_name) {
        m_name = p_name;
    }

    public String getCip() {
        return m_cip;
    }

    public void setCip(String p_cip) {
        m_cip = p_cip;
    }
}

POST处理程序:

@Path("students")
public class StudentResourceHandler {

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public StudentResource onNewStudent(StudentResource p_newStudent) {
        return p_newStudent
    }
}

我只想返回我发布的内容...我已经能够在我的GET处理程序中处理JSON而没有错误(即返回JSON的工作原理),但不知何故{@ 1}}处理程序总是如此没有这个例外:

POST

我正在使用RESTClient来发出请求。这是一个对我失败的请求:

头:

javax.servlet.ServletException: javax.ws.rs.ProcessingException: Error deserializing object from entity stream.

体:

  Content-Type : application/json

我正在做的事情肯定有问题,但我找不到原因。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:3)

如果你没有默认构造函数,杰克逊就无法实例化。

尝试添加默认构造函数:

public class StudentResource {

    String m_name;
    String m_cip;

    public StudentResource(String p_name, String p_cip) { 
        m_name = p_name;
        m_cip = p_cip;
    }

    //Default constructor 
    public StudentResource() {
    }

    public String getName() {
        return m_name;
    }

    public void setName(String p_name) {
        m_name = p_name;
    }

    public String getCip() {
        return m_cip;
    }

    public void setCip(String p_cip) {
        m_cip = p_cip;
    }
}