我有一个java类:
@XmlRootElement
public class RoomInfo {
@XmlElement
public String name;
@XmlElement
public String w;
@XmlElement
public String h;
@XmlElement
public String size;
}
一个安静的网络服务:
@Path("/create")
public class Create {
@POST
@Consumes("application/json")
public void getInfo(RoomInfo room){
System.out.println("signal");
System.out.println(room.name);
System.out.println(room.w);
System.out.println(room.h);
System.out.println(room.size);
}
}
我正在尝试使用javascript:
发送带有json参数的POST请求var xh = new XMLHttpRequest();
var json = JSON.stringify({
name: "Room1",
w: "2",
h: "4",
size: "12"
});
xh.open("POST", 'http://localhost:8080/create', true);
xh.setRequestHeader('Content-type', 'application/json; charset=utf-8');
console.log(json);
xh.send(json);
但是我在浏览器的控制台中得到以下输出:
{"名称":" ROOM1"" W":" 2"" H":& #34; 4""大小":" 12"}
无法加载资源:服务器响应状态为415(不支持的媒体类型)
据我所知,由于某些原因,我发送的数据无法存入我的RoomInfo对象,但我不明白为什么。
服务器控制台还显示以下内容: com.sun.jersey.spi.container.ContainerRequest.getEntity Java类com.example.jersey.RoomInfo的消息体读取器,Java类型类com.example.jersey.RoomInfo和MIME媒体类型application / json; charset =未找到UTF-8。 与MIME媒体类型兼容的已注册邮件正文阅读器是: 应用/ JSON; charset = UTF-8 - >
答案 0 :(得分:0)
要使POST正常工作,您的POST需要设置“内容类型”' ' application / json'
的标题然后你的POST方法也可能需要@Produces(MediaType.APPLICATION_JSON)
此外,POJO确实需要一个如上所述的默认构造函数。