不支持Java POST请求的媒体类型
Unsupported Media Type with Java POST request
我有一个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);
但我在浏览器的控制台中得到了以下输出:
{"name":"Room1","w":"2","h":"4","size":"12"}
加载资源失败:服务器响应状态为415(不支持的媒体类型)
我知道由于某种原因,我发送的数据无法放入我的RoomInfo对象,但我不明白为什么。
服务器控制台还显示以下内容:com.sun.jsey.spi.cotainer.ContainerRequest.getEntity Java类com.example.jersey.RoomInfo、Java类型类com.example.jersey.RoomInfo和MIME媒体类型application/json的消息体读取器;未找到charset=UTF-8。已注册的与MIME媒体类型兼容的邮件正文读取器包括:application/json;charset=UTF-8->
要使POST正常工作,您的POST需要设置"application/json"的"Content Type"标头
那么您的POST方法可能还需要@Produces(MediaType.APPLICATION_JSON)
此外,POJO确实需要一个如上所述的默认构造函数。
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 415(不支持的媒体类型)错误
- 不支持的媒体类型错误
- 对jQuery使用setTimeout()是否有任何问题;媒体查询“;类型情况
- 415 使用 JQuery/FormData 和 Web API 的不受支持的媒体类型
- 是否有媒体查询类型方法可以根据设备切换js文件
- c#asp.net如何使用bootstrap模式将视频源文件名添加到不同的媒体类型中
- 不支持Java POST请求的媒体类型
- Ajax/JSON服务器的响应状态为415(不支持的媒体类型)
- 我正在创建一个社交媒体类型的网站,我需要让用户动态发布
- 如何将css媒体类型动态添加到页面中
- Knockoutjs:如何根据类型和媒体类型进行过滤
- 正在加载媒体类型错误的脚本
- 邮件附件错误的媒体类型Gmail API
- 415(不支持的媒体类型)在尝试进行JSON调用时出错
- java POST 415(不支持的媒体类型)
- 如何从MIME类型中获取媒体类型
- POST请求返回415-不支持的媒体类型
- 415 不支持的媒体类型错误 - Domo 连接器