【问题标题】:How to read the contents of an OutboundJaxrsResponse in Java如何在 Java 中读取 OutboundJaxrsResponse 的内容
【发布时间】:2016-05-18 15:29:05
【问题描述】:

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

【问题讨论】:

  • 你看过jersey.java.net/documentation/latest/test-framework.html。你运行你的测试是一个客户端-服务器设置,它可以让你询问从你的方法返回的响应。您的 Jersey 应用程序在一个轻量级容器中运行,如果我没记错的话,您可以向它发出 http 请求
  • getEntity() 然后投射它

标签: java jersey jax-rs response


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 2013-02-14
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多