java调用构建器如何将响应作为字符串进行记录?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java调用构建器如何将响应作为字符串进行记录?相关的知识,希望对你有一定的参考价值。

我们从一个我们试图编组成一个对象的其他API中获取json。但是,因为这并不总是有效,我们还希望将每个原始响应主体记录为一个字符串(或者只有当它是一个编组异常时)。例如:

Response response = invocationBuilder.get();
int statusCode = response.getStatus();
if (statusCode != 200 && statusCode !=201 && stausCode != 404) {
    logger.error("Got a strange response: " + response.????
}

// this may fail with exceptions...
MyResponseDO myResponse = response.readEntity(MyResponseDO.class);

return myResponse;

有什么建议?我无法在Response类上看到任何有用的东西(没有getBody()或类似的东西)。

答案

由于JSON只是一个字符串,因此可以映射到字符串类型。您可以使用以下方式获得原始响

response.readEntity(String.class);

注意:readEntity关闭数据流,这意味着你不能再次调用readEntity。来自java doc

从此方法返回的消息实例将被缓存,以便通过getEntity()进行后续检索。除非提供的实体类型是输入流,否则此方法会在打开时自动关闭未使用的原始响应实体数据流。

以上是关于java调用构建器如何将响应作为字符串进行记录?的主要内容,如果未能解决你的问题,请参考以下文章

当我在我的应用程序中调用 API 时,它会向我显示数据作为响应,但在未来的构建器中,它无法向我显示数据

如果我必须进行REST调用并将响应值与UI进行比较,那么步骤定义将如何构建?

如何读取和复制 HTTP servlet 响应输出流内容以进行日志记录

如何使用 Spring MVC 设计通用响应构建器/RESTful Web 服务?

如何自定义Flask中的响应类

如何在java中进行rest api调用并映射响应对象?