Ich habe einen Arbeits json Service, der wie folgt aussieht:Wie poste ich einen Pojo mit Jersey Client, ohne manuell zu JSON konvertieren zu müssen?
@POST
@Path("/{id}/query")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(JSON)
public ListWrapper query(@Context SecurityContext sc, @PathParam("id") Integer projectId, Query searchQuery) {
...
return result
}
Die Abfrage Objekt sieht wie folgt aus und wenn eine json Darstellung dieses Objekt Abfrage Entsendung funktioniert es schön aus.
@XmlRootElement
public class Query {
Integer id;
String query;
... // Getters and Setters etc..
}
Jetzt mag ich das Objekt von einem Client füllen und Jersey-Client verwenden, dass die Query-Objekt in den Dienst zu stellen und eine JSONObject als Ergebnis zu erhalten. Mein Verständnis ist, dass es getan werden könnte, ohne es zuerst zu einem JSON-Objekt zu konvertieren und dann als String zu veröffentlichen.
Ich habe so etwas versucht, aber ich denke, ich vermisse etwas.
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;
}
Ich benutze Jersey 1.12.
Jede Hilfe oder Zeiger in die richtige Richtung würde sehr geschätzt werden.
Vielen Dank! Sie haben mich mit der ClientResponse auf den richtigen Weg gebracht. Ich musste noch ein paar zusätzliche Sachen machen: 'WebResource webResource = client.resource (url); ClientResponse-Antwort = webResource.type (MediaType.APPLICATION_JSON_TYPE) .accept (MediaType.APPLICATION_JSON) .post (ClientResponse.class, searchQuery); ListWrapper listWrapper = response.getEntity (ListWrapper.class); ' Jetzt habe ich eine JsonMappingException, aber ich denke, es ist ein Fehler in der Json-Ergebnis. – Perty
Entschuldigung mein Markup: -/ – Perty