我在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错误。
我该如何实施?