如何通过Streamingout返回206响应

时间:2018-07-31 18:08:48

标签: java spring jax-rs jersey-2.0

我在jersey中实现了一个jax-rs服务,以从db中获取数百万条记录

  @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));
     // fetch from resultset and write// writer.write("test");
      writer.flush();  // <-- This is very important.  Do not forget.
    }
  };
  return Response.ok(stream).build();
}

我有一个测试用例,需要用HttpStatus:206(部分内容)进行响应,这意味着必须有一个处理所有结果的正文和一个http状态代码206。

所有我可以实现的客户端都可以得到200(OK),500(服务器错误),但是我没有办法发送正文以及其他状态代码。原因是它首先设置了响应状态,然后懒洋洋地调用了流函数(在这里我叫db来获取所有结果)。因此,除非我处理该函数,否则我不能说是否会出现206错误。

我该如何实施?

0 个答案:

没有答案