2013-10-24 13 views
9

Sto utilizzando client jersey per inviare un file a un URI REST che restituisce la risposta come json. Il mio requisito è di leggere la risposta così com'è (json) su una stringa.lettura risposta JSON come stringa utilizzando client jersey

Ecco la parte di codice che pubblica i dati sul servizio web.

final ClientResponse clientResp = resource.type(
      MediaType.MULTIPART_FORM_DATA_TYPE). 
      accept(MediaType.APPLICATION_JSON). 
      post(ClientResponse.class, inputData); 
    System.out.println("Response from news Rest Resource : " + clientResp.getEntity(String.class)); // This doesnt work.Displays nothing. 

clientResp.getLength() è 281 byte che è la dimensione della risposta, ma clientResp.getEntity (String.class) restituisce nulla.

Qualche idea su cosa potrebbe non essere corretto qui?

risposta

15

sono stato in grado di trovare una soluzione al problema. Ho appena dovuto chiamare il metodo bufferEntity prima di getEntity (String.class). Ciò restituirà la risposta come stringa.

clientResp.bufferEntity(); 
    String x = clientResp.getEntity(String.class); 
+1

In questo momento il metodo Jersey corretto è readEntity (String.class), invece di getEntity (String.class). –

0

Se hai ancora problemi con questo, si può prendere in considerazione di utilizzare rest-assured

+0

Grazie per la respnse. REST-assicurato sembra essere promettente, ma posso usare solo il client jersey nel mio progetto. :( – Sudhir

5

Anche se la risposta precedente è corretta, usando Jersey API v2.7 è leggermente diverso con Response:

Client client = ClientBuilder.newClient(); 
WebTarget target = client.target("http://localhost:8080"); 
Response response = target.path("api").path("server").path("ping").request(MediaType.TEXT_PLAIN_TYPE).get(); 
System.out.println("Response: " + response.getStatus() + " - " + response.readEntity(String.class));