如何从StreamingOutput读取数据

时间:2015-01-21 01:47:41

标签: java web-services rest jax-rs

我有一个安静的网络服务。我正在考虑从类中的另一个方法调用一个方法。可能吗?如果是这样,我如何阅读以下示例中的流输出内容?另外,我需要单独使用这两个函数,以便我可以返回二进制文件或显示文本文件

@Path("/base")
public class Base{

    @GET
    @Path("/base/func1")
    @Produces(MediaType.APPLICATION_OCTET_STREAM)
    public Response func1(){
        final String some_outfilename = "test.pdf";
        StreamingOutput st = new StreamingOutput(){
            @Override
            public void write(OutputStream os) throws IOException{
                Writer writer = new BufferedWriter(new OutputStreamWriter(os));
                writer.write("test");
                writer.flush();
            }
        };
        return Response.ok(stream, MediaType.APPLICATION_OCTET_STREAM).header("content-disposition","attachment; filename =" + some_outFilename).build();
    }

    @GET
    @Produces(MediaType.APPLICATION_OCTET_STREAM)
    @Path("/base/func2")
    public Response func2(){
        //I want to call func1() from here, like
        //StreamingOutput st = (StreamingOutput)func1().getEntity();
        //But how do I get the "test" written inside??
        //Once obtained I can return it as response
    }
}

编辑#1: func1()确实有一个return语句。我把它放在后面(对不起)。 func2()也应该有一个return语句..我没有把它放,因为我不明白如何构造它。

1 个答案:

答案 0 :(得分:2)

func1不会返回任何内容,甚至不会返回st

您应该将要使用的公共代码从func1func2移动到第三个private方法。此方法应该返回一些可以包装在StreamingOutput实例中的内容。