2013-07-09 11 views
5

HI Ho cercato di chiamare l'API REST POST utilizzando il client REST jersey. L'API è docs è URL: METODO: POST Header Info: - X-GWS-app-name: XYZ Accept: application/JSON o application/xmlImpostazione del tipo di contenuto/codifica in Jersey REST Client

My Sample Jersey codice del client è

Client client = Client.create(); 

WebResource resource=client.resource(URL); 

resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML); 
resource.type(javax.ws.rs.core.MediaType.APPLICATION_XML); 
resource.type("charset=utf-8"); 
ClientResponse response = resource.post(ClientResponse.class,myReqObj); 

Ho provato questa variazione del codice dall'ultima settimana e non funziona. Qualsiasi aiuto in questo senso è molto apprezzato.

risposta

7

La parte difficile è che i metodi WebResource seguono il modello di progettazione Builder in modo che restituisca un oggetto Builder che è necessario conservare e continuare mentre si chiamano ulteriori metodi per impostare il contesto completo della richiesta.

Quando si esegue resource.accept, restituisce qualcosa che non si archivia, quindi viene perso quando si esegue resource.type e quindi solo l'ultima chiamata diventa effettiva.

In genere, tutti i criteri vengono impostati su una riga, ma è possibile anche salvare l'output in una variabile locale.

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

Credo che è necessario rimuovere i punti e virgola dalle estremità delle linee accettare e tipo. – FrontierPsycho

+0

copia/incolla violento. :) è stato risolto ora. Grazie! – TheArchitect

+0

Prego e grazie. :) – FrontierPsycho

1

Mi piace.

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

qui, 'a' è un'istanza di classe conto che, come

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

E 'questo per il Jersey 2? Sembra ... insolito, forse potresti ampliare la risposta un po '? – Nenotlep