首页 > 解决方案 > 如何在 http 流的末尾发送错误代码

问题描述

我正在通过流将流程调用的输出发送到 http 响应。现在我想以某种方式通知客户端进程调用的返回代码,或者至少如果返回代码不是 0。对于通过 http 代码发送此信息已经太晚了。将它嵌入到流中对我来说是可以的(例如,通过一个不可见的字符,这将由客户端评估),但目前我没有看到这样做的方法。这是我创建流的代码。

private Response getStreamResponse(List<String> cmd) throws IOException {
    log.info("command: " + String.join(" ", cmd));
    Process process = new ProcessBuilder().command(cmd).redirectErrorStream(true).start();
    return Response.ok((StreamingOutput) outputStream -> copyStream(process.getInputStream(), outputStream)).build();
}

private void copyStream(InputStream source, OutputStream target) throws IOException {
    byte[] buf = new byte[8];
    int length;
    while ((length = source.read(buf)) > 0) {
        target.write(buf, 0, length);
        target.flush();
    }
}

知道如何实现这一目标吗?

标签: javahttpjax-rs

解决方案


推荐阅读