如何在Java中读取OutboundJaxrsResponse的内容

问题描述 投票:3回答:1

我写了一个使用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格式)

java jersey jax-rs response
1个回答
0
投票

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

如何将响应内容作为Java String获取。从这一点,我相信你可以找出如何将其作为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" );
}
© www.soinside.com 2019 - 2024. All rights reserved.