2016-01-06 98 views
0

我有一個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 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」: 「4」, 「尺寸」: 「12」}

未能加載資源:服務器用響應狀態415(Unsupported Media Type)

據我所知,由於某些原因,我發送的數據不能放入我的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媒體類型兼容的已註冊郵件正文閱讀器爲: application/json;字符集= UTF-8 - >

+0

服務器控制檯上是否有任何異常? – gurvinder372

+0

@ gurvinder372是的,我會將其添加到帖子 – seMikel

+0

類似的東西http://stackoverflow.com/questions/7388288/jersey-restfull-service-with-json – gurvinder372

回答

0

對於POST正常工作的POST需要設置 '應用/ JSON'

然後,你的POST方法可能還需要@Produces的 '內容類型' 標頭(的MediaType .APPLICATION_JSON)

另外,POJO確實需要一個如上所述的默認構造函數。

相關問題