[英]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;
}
寧靜的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);
但是我在瀏覽器的控制台中得到以下輸出:
{“ name”:“ Room1”,“ w”:“ 2”,“ h”:“ 4”,“ size”:“ 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媒體類型兼容的已注冊消息正文閱讀器為:application / json; charset = UTF-8->
為了使POST正常工作,您的POST需要設置“ application / json”的“ Content-Type”標頭
然后,您的POST方法可能還需要@Produces(MediaType.APPLICATION_JSON)
同樣,POJO確實需要如上所述的默認構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.