我写了一个使用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格式)
班级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" );
}