gpt4 book ai didi

java - 如何使用 JAX-RS 流式传输无休止的 InputStream

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:32 24 4
gpt4 key购买 nike

我有一个无穷无尽的 InputStream 和一些数据,我想返回这些数据以响应 GET HTTP 请求。我希望我的网络/API 客户端无休止地从中读取。我如何使用 JAX-RS 做到这一点?我正在尝试这个:

@GET
@Path("/stream")
@Produces(MediaType.TEXT_PLAIN)
public StreamingOutput stream() {
final InputStream input = // get it
return new StreamingOutput() {
@Override
public void write(OutputStream out) throws IOException {
while (true) {
out.write(input.read());
out.flush();
}
}
};
}

但内容不会出现在客户端。但是,如果我添加 OutputStream#close(),服务器会在那一刻传送内容。我怎样才能让它真正流式传输?

最佳答案

简单的使用JAX-RS的StreamingOutput

@Path("/numbers")
public class NumbersResource {

@GET
public Response streamExample(){
StreamingOutput stream = new StreamingOutput() {
@Override
public void write(OutputStream out) throws IOException, WebApplicationException {
Writer writer = new BufferedWriter(new OutputStreamWriter(out));
for (int i = 0; i < 10000000 ; i++){
writer.write(i + " ");
}
writer.flush();
}
};
return Response.ok(stream).build();
}
}

关于java - 如何使用 JAX-RS 流式传输无休止的 InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com