2013-07-09 5 views
5

HI Ich habe versucht, die REST POST API mit dem Jersey REST Client aufzurufen. Die API ist docs ist URL: Methode: POST Header-Info: - X-GWS-APP-NAME: XYZ Accept: application/json oder application/xmlEinstellung des Inhaltstyps/der Verschlüsselung in Jersey REST Client

Mein Beispiel Jersey Client-Code ist

Ich habe diese Code-Variation seit letzten 1 Woche versucht und es funktioniert nicht. Jede Hilfe in dieser Hinsicht wird sehr geschätzt.

Antwort

7

Der schwierige Teil besteht darin, dass die WebResource-Methoden dem Builder-Entwurfsmuster folgen, sodass ein Builder-Objekt zurückgegeben wird, das Sie beibehalten und weiter verwenden müssen, um den vollständigen Kontext der Anforderung festzulegen.

Wenn Sie resource.accept ausführen, gibt es etwas zurück, das Sie nicht speichern. Es geht also verloren, wenn Sie resource.type ausführen und daher nur Ihr letzter Aufruf wirksam wird.

Sie würden normalerweise alle Kriterien in einer Zeile setzen, aber Sie könnten die Ausgabe auch in einer lokalen Variablen speichern.

ClientResponse response = client.resource(URL) 
           .accept(MediaType.APPLICATION_XML) 
           .type(MediaType.APPLICATION_XML) 
           .post(ClientResponse.class,myReqObj); 
+2

Ich glaube, Sie brauchen die Semikolons von den Enden der nehmen und Art Leitungen zu entfernen. – FrontierPsycho

+0

missbräuchliche Kopieren/Einfügen. :) Es ist jetzt behoben. Vielen Dank! – TheArchitect

+0

Gern geschehen und danke. :) – FrontierPsycho

1

Ich mag das.

Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE) 
    .accept(MediaType.APPLICATION_JSON_TYPE) 
    .post(Entity.entity(a, "application/json; charset=UTF-8")); 

hier, ‚a‘ Kontoklasseninstanz, die wie

@XmlRootElement 
public class account { 
... 
... 
} 
+0

Ist das für Jersey 2? Es scheint ... ungewöhnlich, vielleicht könnten Sie die Antwort ein wenig erweitern? – Nenotlep

Verwandte Themen