2013-02-13 114 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

相关问题