我有一个工作的JSON服务,看起来像这样:如何在没有手动转换为JSON的情况下使用Jersey客户端发布Pojo?
@POST
@Path("/{id}/query")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(JSON)
public ListWrapper query(@Context SecurityContext sc, @PathParam("id") Integer projectId, Query searchQuery) {
...
return result
}
查询对象看起来像这一点,并发布该查询对象的JSON表示时,它的作品了不错的。
@XmlRootElement
public class Query {
Integer id;
String query;
... // Getters and Setters etc..
}
现在我想从客户端填充该对象,并使用Jersey客户端将该Query对象发布到该服务并获取JSONObject作为结果。我的理解是,它可以完成而无需先将其转换为json对象,然后以String形式发布。
我试过这样的东西,但我想我错过了什么。
public static JSONObject query(Query searchQuery){
String url = baseUrl + "project/"+searchQuery.getProjectId() +"/query";
WebResource webResource = client.resource(url);
webResource.entity(searchQuery, MediaType.APPLICATION_JSON_TYPE);
JSONObject response = webResource.post(JSONObject.class);
return response;
}
我使用的是泽西岛1.12。
任何帮助或指针在正确的方向将不胜感激。
谢谢! 你让我在正确的轨道与ClientResponse。我还必须做一些额外的东西: 'WebResource webResource = client.resource(url); ClientResponse response = webResource.type(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class,searchQuery); ListWrapper listWrapper = response.getEntity(ListWrapper.class); ' 现在我得到了一个JsonMappingException,但我认为这是json结果中的错误。 – Perty 2012-04-26 16:14:28
对不起我的标记: -/ – Perty 2012-04-26 16:25:11