Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从StreamingOutput读取数据_Java_Web Services_Rest_Jax Rs - Fatal编程技术网

Java 如何从StreamingOutput读取数据

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(){

我有一个restful Web服务。我正在考虑从类中的另一个方法调用一个方法。可能吗?如果是这样,我如何读取下面示例中的流输出内容?此外,我需要两个函数分开,以便我可以返回二进制文件或显示文本文件的文本

@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中,没有返回,因为我不知道返回什么结构,但它也打算返回一个响应