2013-10-24 17 views
9

Tôi đang sử dụng ứng dụng khách trên áo để đăng tệp lên URI REST trả về phản hồi dưới dạng json. Yêu cầu của tôi là đọc phản hồi như (json) đến một chuỗi.đọc phản hồi JSON dưới dạng chuỗi sử dụng ứng dụng khách của khách hàng jersey

Đây là đoạn mã đăng dữ liệu lên dịch vụ 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() có 281 byte là kích thước của phản hồi, nhưng clientResp.getEntity (String.class) không trả về gì cả.

Bất kỳ ý tưởng nào có thể không chính xác ở đây?

Trả lời

15

tôi đã có thể tìm thấy giải pháp cho vấn đề. Chỉ cần gọi phương thức bufferEntity trước getEntity (String.class). Điều này sẽ trả về câu trả lời dưới dạng chuỗi.

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

Tại thời điểm này, phương thức Jersey chính xác là readEntity (String.class), thay vì getEntity (String.class). –

0

Nếu bạn vẫn có vấn đề với điều này, bạn có thể muốn xem xét việc sử dụng rest-assured

+0

Cảm ơn respnse. REST yên tâm có vẻ hứa hẹn, nhưng tôi chỉ có thể sử dụng ứng dụng khách trong dự án của tôi. :( – Sudhir

5

Mặc dù câu trả lời trên là chính xác, sử dụng Jersey API v2.7 nó hơi khác với 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)); 
Các vấn đề liên quan