如何在Java中读取OutboundJaxrsResponse的内容

时间:2016-05-18 15:29:06

标签: java jersey jax-rs response

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

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

这会获得Revision个对象流,将流转换为StreamingOutput,然后将其发送到Response

我正在尝试编写集成测试来测试它,我希望看到Response内部的内容。换句话说,我想知道诸如

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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" );
}