泽西客户端获取错误消息正文

时间:2016-02-01 10:42:05

标签: java jax-rs jersey-client

我使用以下代码来使用休息后服务

Client client = ClientBuilder.newClient();
WebTarget target = client.target("wrong url");
Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON);
Response response = builder.post(Entity.entity(param, MediaType.APPLICATION_JSON), Response.class);

正如所料,我收到了错误。和状态代码400 Bad Request。但我没有收到错误消息。当我运行response.getStatusInfo()我得到了错误的请求,但我的服务器发送了额外的信息。

当我使用postman调用它时,我在Body窗口中收到错误信息。

那么如何从响应对象中获取此错误正文信息? 或任何其他方式???

1 个答案:

答案 0 :(得分:6)

您可以像往常一样使用Response#readEntity获得响应正文:

  

使用支持将消息实体流映射到请求类型的MessageBodyReader,将消息实体输入流读取为指定Java类型的实例。

示例:

Client client = ClientBuilder.newClient();
WebTarget target = client.target("wrong url");
Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON);
Response response = builder.post(Entity.entity(param, MediaType.APPLICATION_JSON), Response.class);
String body = response.readEntity(String.class);

使用Response#getStatusInfo,您只能获得HTTP statusclassreason phrase