在Jersey中使用StreamingOutput作为Response实体的示例

Dav*_*Loy 73 jersey

有人可以发布一个如何在Jersey中设置StreamingOutputResponse对象中的实体的示例吗?

我无法找到这样的例子.

con*_*dit 120

看看这是否有帮助:

@GET
@Produces(MediaType.TEXT_PLAIN)
public Response streamExample() {
  StreamingOutput stream = new StreamingOutput() {
    @Override
    public void write(OutputStream os) throws IOException,
    WebApplicationException {
      Writer writer = new BufferedWriter(new OutputStreamWriter(os));
      writer.write("test");
      writer.flush();  // <-- This is very important.  Do not forget.
    }
  };
  return Response.ok(stream).build();
}
Run Code Online (Sandbox Code Playgroud)

  • AAAAARRRRRRRRRRRRRRRRRRRRGH.我花了四个小时试图找出为什么我的球衣休息服务没有流式传输文件.我没有给我的作家写一个同花顺.Sooooooo很烦人.谢谢你拯救我! (25认同)
  • 感谢您的回答,但是我如何从客户端的Response中获取此StreamingOutput对象? (4认同)
  • @prongs + Nagyl:是的,我想通了:InputStream是= ClientBuilder.newBuilder().register(MultiPartFeature.class).build().target(BASE_URI).path("/ yourservice").request().get ().readEntity(InputStream.class); (所有在一个"句子"中,将其拆分为客户端,目标和响应对象可能是好的) (3认同)
  • 遗憾的是,JAX-RS V 1.1规范和Java EE 6 Javadoc都没有指定是否应该关闭给定的输出流.考虑到前面的注释,我怀疑你确实应该调用OutputStream.close()而不是OutputStream.flush().这可以释放与输出流相关联的一些内部资源. (2认同)