将URL的内容作为jaxRS响应中的文件返回

时间:2012-02-17 22:09:57

标签: response jax-rs

我是一个REST包装器服务,当我调用后端服务时,在某些情况下,他们生成了一个我可以使用特定URL检索的文件:https://localhost:1234/ ...我如何最有效地使用javax .ws.core.Response将该链接的内容发送给调用者?我可能自己将URL读取到本地文件并以这种方式发送,但我想知道REST是否会为我做这件事。谢谢,

1 个答案:

答案 0 :(得分:0)

当您的后端网址对您的客户端公开时,您可以发送重定向301。

当它不是

@Get
@Produces({...})
public Response readFile() {

    return Response.ok().entity(new StreamingOutput() {
        @Override public void write(OutputStream output)
           throws IOException, WebApplicationException {
           // open the back-end url and copy the bytes to given output
           final InputStream input = new URL(back-end-url).openStream();
           final byte[] buf = new byte[1024];
           for (int read = -1; (read = input.read(buf)) != -1; ) {
               output.write(buf, 0, read);
           }
           output.flush();
        }
    }).build();
}