我有一个网络服务如下:
@POST
@Path("/push")
@Consumes(MediaType.APPLICATION_JSON)
public String push(@QueryParam("comment") String comment,
@QueryParam("type") String type){
// do something
}我的请求机构是:
{
"comment" : "comment1",
"type" : "type1"
}当发出适当的post请求时,会调用我的web服务,但是参数comment和type具有null值。这里怎么了?
发布于 2016-05-26 17:37:37
您将查询参数与Post请求有效负载混淆。
@Query参量查询参数从请求URI查询参数中提取,并使用方法参数参数中的javax.ws.rs.QueryParam注释指定。
查询参数是可选的,如果不设置它们,它们将被设置为null。
如果您希望将‘注释& type’作为查询参数,则应按以下方式传递它们:
http://<HOST:port>/push?comment=comment1&type=type1相反,Post方法Payload将与您的POST请求一起发送。
在您的示例中,您将“注释”和“type”作为有效负载传递,但它没有映射到任何内容。
如果你想要接收你的有效负载,映射到一个对象,你应该做一些改变。
首先,创建一个带有@XmlRootElement注释的类
@XmlRootElement
class MyMessage{
String comment;
String type;
//add getter and setter
}rest入口点如下所示:
@POST
@Path("/push")
@Consumes(MediaType.APPLICATION_JSON)
public String push(MyMessage message){
String comment = message.getComment()
String type = message.getType()
// do something
}https://stackoverflow.com/questions/37466739
复制相似问题