我是新泽西人,一直在尝试为一个简单的Student
REST资源实现一个POST
处理程序,该处理程序由一个名称和一个CIP组成,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工作),但不知何故,POST
处理程序总是失败,并出现以下异常:
javax.servlet.ServletException: javax.ws.rs.ProcessingException: Error deserializing object from entity stream.
我正在使用RESTClient发出我的请求。下面是一个对我来说失败的请求:
标题:
Content-Type : application/json
正文:
{
"cip": "gmar2104",
"name": "Marcel"
}
我正在做的事情肯定有问题,但我找不到原因。任何帮助都将不胜感激。谢谢。
发布于 2018-06-03 09:36:42
如果你没有默认的构造函数,Jackson就不能实例化。
尝试添加默认构造函数:
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;
}
}
https://stackoverflow.com/questions/50662092
复制相似问题