2013-02-13 118 views
1

我已經設置了我的請求的內容類型,並且仍然收到不受支持的媒體類型異常。尋找第二組在這裏的眼睛....415不支持的媒體類型。內容類型集

我的Java代碼:

@Path("/myPath") 
public class MyResource { 

    SensorStore dataStore = new SensorStoreDynamoImpl(); 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("/{id}") 
    public Reading getObj(String id) { 
     return dataStore.getValue(id); 
    } 

    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    public void saveObj(String id, Double myDouble, Long myLong) { 
     dataStore.saveReading(id, myDouble, myLong); 
    } 

} 

呼叫我做:

POST to /myPath 

Header: 
Content-Type: application/json 

Body: 

{ 
id:"test", 
myDouble:22.2, 
myLong:22 
} 

任何想法?

+1

我有同樣的問題,我改變媒體類型Text_Plain則工作 – Parvathy 2013-02-13 05:10:02

回答

4

這看起來不像我知道的任何有效的資源方法。如果有一些我不知道的高級特性,我很想糾正它,但是我從來不知道JAX-RS/Jersey允許您通過名稱將任意JSON字段綁定到方法參數。你需要更多的東西一樣:

class MyPojo { 
    String id; 
    Double myDouble; 
    Long myLong; 
} 

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
public void saveObj(MyPojo myPojo) { 
    dataStore.saveReading(myPojo.id, myPojo.myDouble, myPojo.myLong); 
} 
+3

我確認你不能做這樣的事情。 Jersey(或其他jax-rs impl)可以將json內容綁定到多個參數。你只能將完整的json綁定到一個參數。還必須引用json的名字 – eugen 2013-02-13 08:49:39

+0

太棒了,謝謝! – Craig 2013-02-13 16:40:40

+0

我還缺少一件事。 POJO上的@XmlRootElement – Craig 2013-02-19 23:03:35

相關問題