Tôi có một dịch vụ json làm việc đó trông như thế này:Làm cách nào để đăng một Pojo bằng ứng dụng khách của Jersey mà không cần chuyển đổi sang JSON theo cách thủ công?
@POST
@Path("/{id}/query")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(JSON)
public ListWrapper query(@Context SecurityContext sc, @PathParam("id") Integer projectId, Query searchQuery) {
...
return result
}
Đối tượng truy vấn trông như thế này và khi đăng một đại diện json của đối tượng Query nó hoạt động ra tốt đẹp.
@XmlRootElement
public class Query {
Integer id;
String query;
... // Getters and Setters etc..
}
Bây giờ tôi muốn điền đối tượng đó từ ứng dụng khách và sử dụng ứng dụng khách Jersey để đăng đối tượng truy vấn đó lên dịch vụ và nhận kết quả JSONObject. Sự hiểu biết của tôi là nó có thể được thực hiện mà không cần chuyển đổi nó thành một đối tượng json đầu tiên và sau đó được đăng dưới dạng một String.
Tôi đã thử một cái gì đó như thế này nhưng tôi nghĩ rằng tôi bỏ lỡ một cái gì đó.
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;
}
Tôi đang sử dụng Jersey 1.12.
Bất kỳ trợ giúp hoặc con trỏ nào đi đúng hướng sẽ được đánh giá cao.
Cảm ơn bạn! Bạn đã giúp tôi đi đúng hướng với ClientResponse. Tôi cũng phải thực hiện một số nội dung bổ sung: 'WebResource webResource = client.resource (url); Phản hồi của ClientResponse = webResource.type (MediaType.APPLICATION_JSON_TYPE) .accept (MediaType.APPLICATION_JSON) .post (ClientResponse.class, searchQuery); ListWrapper listWrapper = response.getEntity (ListWrapper.class); ' Bây giờ tôi có một JsonMappingException, nhưng tôi nghĩ rằng đó là một lỗi trong kết quả json. – Perty
Xin lỗi đánh dấu của tôi: -/ – Perty