2013-10-24 4 views
9

Я использую jersey-клиент для публикации файла в REST URI, который возвращает ответ как json. Мое требование - прочитать ответ как есть (json) для строки.Чтение ответа JSON как строки с использованием jersey client

Вот фрагмент кода, который помещает данные в веб-службу.

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 байт, который является размер ответа, но clientResp.getEntity (String.class) ничего не возвращает.

Все идеи могут быть неправильными здесь?

ответ

15

Я был в состоянии найти решение этой проблемы. Просто нужно вызвать метод bufferEntity перед getEntity (String.class). Это вернет ответ как строку.

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

В настоящее время правильный метод Джерси is readEntity (String.class), а не getEntity (String.class). –

0

Если вы все еще есть проблемы с этим, вы можете рассмотреть возможность использования rest-assured

+0

Благодарность за respnse. REST-assured кажется многообещающим, но я могу использовать только jersey-клиент в моем проекте. :( – Sudhir

5

Хотя выше ответ правильный, используя Джерси API v2.7 немного отличается с 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)); 
Смежные вопросы