Return 来自球衣的 HTTP 代码错误时分块响应

Return HTTP codes from jersey Chunked response when in error

我得到了三个服务,就像球衣文档中用分块响应描述的那样: https://jersey.java.net/documentation/latest/async.html

但我必须添加用户访问控制并相应地使用 403 错误代码进行响应,但找不到向响应添加状态或构建错误响应的方法,就像在返回实体主体类型的服务中那样。

有什么想法吗?

您可以 return Response 而不是 ChunkedOutPut,然后将 ChunkedOutPut 或错误消息包装在 Response 对象中,如下所示。

@GET
public Response getChunkedResponse() throws IOException {
    // Check access here
    if (!authorized()) {
        Response.status(403).entity("No Access").build();
    } else {
        final ChunkedOutput<String> output = new ChunkedOutput<String>(String.class);

        new Thread() {
            public void run() {
                // Your operation which returns chunked output.
            }
        }.start();
        return Response.ok(output).build();
    }
}