簡體   English   中英

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;
}

寧靜的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM