我有一个安静的网络服务。我正在考虑从类中的另一个方法调用一个方法。可能吗?如果是这样,我如何阅读以下示例中的流输出内容?另外,我需要单独使用这两个函数,以便我可以返回二进制文件或显示文本文件
@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语句..我没有把它放,因为我不明白如何构造它。
答案 0 :(得分:2)
func1
不会返回任何内容,甚至不会返回st
。
您应该将要使用的公共代码从func1
和func2
移动到第三个private
方法。此方法应该返回一些可以包装在StreamingOutput
实例中的内容。