带有Java POST请求的不受支持的媒体类型

时间:2016-01-06 13:28:18

标签: javascript java post

我有一个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 - >

1 个答案:

答案 0 :(得分:0)

要使POST正常工作,您的POST需要设置“内容类型”' ' application / json'

的标题

然后你的POST方法也可能需要@Produces(MediaType.APPLICATION_JSON)

此外,POJO确实需要一个如上所述的默认构造函数。