Javascript Java POST请求不支持的媒体类型
我有一个java类:Javascript Java POST请求不支持的媒体类型,javascript,java,post,Javascript,Java,Post,我有一个java类: @XmlRootElement public class RoomInfo { @XmlElement public String name; @XmlElement public String w; @XmlElement public String h; @XmlElement public String size; } 以及restful web服务: @Path("/create") public c
@XmlRootElement
public class RoomInfo {
@XmlElement
public String name;
@XmlElement
public String w;
@XmlElement
public String h;
@XmlElement
public String size;
}
以及restful web服务:
@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);
但我在浏览器的控制台中得到以下输出:
{“名称”:“房间1”,“w”:“2”,“h”:“4”,“大小”:“12”}
加载资源失败:服务器响应状态为415(不支持的媒体类型)
我知道由于某些原因,我发送的数据无法放入我的RoomInfo对象,但我不明白为什么
服务器控制台还显示以下内容:
com.sun.jersey.spi.container.ContainerRequest.getEntity是Java类com.example.jersey.RoomInfo、Java类com.example.jersey.RoomInfo和MIME媒体类型application/json的消息体读取器;未找到字符集=UTF-8。
与MIME媒体类型兼容的已注册邮件正文读取器包括:
应用程序/json;charset=UTF-8->要使文章正常工作,您的文章需要设置“application/json”的“Content-Type”标题 然后您的POST方法可能还需要@products(MediaType.APPLICATION_JSON)
此外,POJO确实需要如上所述的默认构造函数 您的服务器控制台上是否有任何异常?@gurvinder372是的,我会将其添加到postsomething类似的@gurvinder372,但我已经有了一个POJO,向其添加构造函数没有任何效果,其他一切都与该答案相同您是否有库设置来序列化和反序列化Java应用程序中的JSON?为了使我的RESTful服务能够从JSON转换,我必须在扩展javax.ws.rs.core.Application的类的构造函数中提供JacksonJsonProvider的实例。还有其他的图书馆,但杰克逊是我唯一真正有经验的图书馆。