Java 使用REST进行数据流传输

Java 使用REST进行数据流传输,java,streaming,swagger,resteasy,Java,Streaming,Swagger,Resteasy,将REST与RESTEasy和Swagger一起使用,是否有任何方法可以通过GET端点将数据流返回给调用方?我已经看到了几个可以返回整个流的示例,但是我还没有看到任何可以实际返回数据流的示例。我也看过这个例子(后面是这个链接-),但是,这个例子看起来像是在返回一个流,并期望调用者利用这个流?这是正确的假设吗 @GET @Produces(MediaType.APPLICATION_OCTET_STREAM) @Path("/stream/test") public Response getTes

将REST与RESTEasy和Swagger一起使用,是否有任何方法可以通过GET端点将数据流返回给调用方?我已经看到了几个可以返回整个流的示例,但是我还没有看到任何可以实际返回数据流的示例。我也看过这个例子(后面是这个链接-),但是,这个例子看起来像是在返回一个流,并期望调用者利用这个流?这是正确的假设吗

@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
@Path("/stream/test")
public Response getTestStream() {

    String myName = "name";
    InputStream stream = new ByteArrayInputStream(myName.getBytes(StandardCharsets.UTF_8));

    return Response.ok().entity(stream).build();
}
但这似乎对我不起作用。我得到一个异常:javax.ws.rs.NotAcceptableException:RESTEASY003635:接受头不匹配


任何帮助都将不胜感激

您可以返回inputstream对象的对象作为响应

例如

@GetMapping(value = "/stream/test")
@ResponseBody
public ResponseEntity<?> getTestStream() {

    String myName = "name";
    InputStream stream = new ByteArrayInputStream(myName.getBytes(StandardCharsets.UTF_8));

    HttpHeaders headers = new HttpHeaders();
    headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
    headers.add("Pragma", "no-cache");
    headers.add("Expires", "0");

    return ResponseEntity
            .ok()
            .headers(headers)
            .contentType(MediaType.APPLICATION_OCTET_STREAM)
            .body(new InputStreamResource(stream));
}
@GetMapping(value=“/stream/test”)
@应答器
公共响应getTestStream(){
字符串myName=“name”;
InputStream=newbytearrayinputstream(myName.getBytes(StandardCharsets.UTF_8));
HttpHeaders=新的HttpHeaders();
添加(“缓存控制”,“无缓存,无存储,必须重新验证”);
添加(“Pragma”、“无缓存”);
标题。添加(“到期”、“0”);
返回响应性
.ok()
.标题(标题)
.contentType(MediaType.APPLICATION\u八位字节\u流)
.主体(新输入流资源(流));
}

检查客户端请求的
接受
标题,并尝试将其设置为
应用程序/octet流