使用jersey客户端将JSON响应读取为字符串

Sud*_*hir 10 string json response jersey

我正在使用jersey客户端将文件发布到REST URI,该URI返回响应为json.我的要求是将响应按原样(json)读取到字符串.

以下是将数据发布到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.
Run Code Online (Sandbox Code Playgroud)

clientResp.getLength()有281个字节,这是响应的大小,但clientResp.getEntity(String.class)什么都不返回.

任何想法在这里可能是不正确的?

Sud*_*hir 17

我能够找到问题的解决方案.只需在getEntity(String.class)之前调用bufferEntity方法.这将以字符串形式返回响应.

   clientResp.bufferEntity();
   String x = clientResp.getEntity(String.class);
Run Code Online (Sandbox Code Playgroud)

  • 此时正确的Jersey方法是readEntity(String.class),而不是getEntity(String.class). (3认同)

Mar*_*ski 7

虽然上面的答案是正确的,但使用Jersey 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));
Run Code Online (Sandbox Code Playgroud)