小编Sou*_*osh的帖子

REST 流 JSON 输出

我们有需要发回 JSON 输出的 JAX RS 实现。但是响应大小是巨大的。并且客户端同步期望相同。因此我尝试使用 StreamingOutput ......但客户端并没有真正以块的形式获取数据。以下是示例片段:

服务器端

streamingOutput = new StreamingOutput() {

    @Override
    public void write(OutputStream out) throws IOException, WebApplicationException {
        JsonGenerator jsonGenerator = mapper.getFactory().createGenerator(out);
        jsonGenerator.writeStartArray();
        for(int i=0; i < 10; i++) {
            jsonGenerator.writeStartObject();

            jsonGenerator.writeStringField("Response_State", "Response State - " + i);
            jsonGenerator.writeStringField("Response_Report", "Response Report - " + i);
            jsonGenerator.writeStringField("Error_details", "Error Details - " + i);

            jsonGenerator.writeEndObject();;
            jsonGenerator.flush();

            try {
                Thread.currentThread().sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        jsonGenerator.writeEndArray();

        jsonGenerator.close();

    }
};

return Response.status(200).entity(streamingOutput).build();
Run Code Online (Sandbox Code Playgroud)

客户

HttpClient client = …
Run Code Online (Sandbox Code Playgroud)

java streaming json jax-rs output

5
推荐指数
1
解决办法
6515
查看次数

标签 统计

java ×1

jax-rs ×1

json ×1

output ×1

streaming ×1