如何在 Java 中读取 OutboundJaxrsResponse 的内容

use*_*231 5 java response jax-rs jersey

我编写了一个使用 Jersey 的服务。在返回 Response 对象的最后一个类中,我有:

Stream<Revision> revisionss = dataSourceHandler.getRevisions( .... );
StreamingOutput stream = os -> objectHistoryWorker.revisionsTransfer(revisions, os);
return Response.ok(stream).build();
Run Code Online (Sandbox Code Playgroud)

这将获取一个 StreamRevision对象,将流转换为StreamingOutput,然后在Response.

我正在尝试编写一个集成测试来测试这个,我想看看Response. 换句话说,我想知道诸如

  • Revision存在多少对象
  • Revision对象是否包含正确的信息

我遇到的问题是它是一个OutboundJaxrsResponse,并且readEntity()不支持该方法。

它具有无论是否通过都会返回的方法(即状态代码 200),但我似乎无法找到一种实际读取响应内容的方法。

有没有办法获得这些信息?

(预期的响应内容将为 Json 格式)

Ste*_*art 4

班级org.glassfish.jersey.message.internal.OutboundJaxrsResponse 确实支持getEntity()

如何获取 Java 字符串形式的响应内容。由此,我相信您可以弄清楚如何将其读取为 Json 或 XML ....

private String entity( Response response ) throws WebApplicationException, IOException
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    StreamingOutput output = (StreamingOutput) response.getEntity();
    output.write( baos );
    return baos.toString( "UTF-8" );
}
Run Code Online (Sandbox Code Playgroud)