Java 如何从StreamingOutput读取数据
我有一个restful Web服务。我正在考虑从类中的另一个方法调用一个方法。可能吗?如果是这样,我如何读取下面示例中的流输出内容?此外,我需要两个函数分开,以便我可以返回二进制文件或显示文本文件的文本Java 如何从StreamingOutput读取数据,java,web-services,rest,jax-rs,Java,Web Services,Rest,Jax Rs,我有一个restful Web服务。我正在考虑从类中的另一个方法调用一个方法。可能吗?如果是这样,我如何读取下面示例中的流输出内容?此外,我需要两个函数分开,以便我可以返回二进制文件或显示文本文件的文本 @Path("/base") public class Base{ @GET @Path("/base/func1") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response func1(){
@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语句。。我没有把它放进去,因为我不知道如何构造它。
func1
不返回任何内容,甚至不返回st
您应该将要使用的公共代码从
func1
和func2
移动到第三个private
方法。此方法应该返回一些可以包装在StreamingOutput
实例中的内容。非常抱歉。。我的意思是在func1中放一个返回语句。我把它放在那里了。在func2中,没有返回,因为我不知道返回什么结构,但它也打算返回一个响应