2015-01-21 25 views
0

我有一個寧靜的web服務。我想從班級中的另一種方法調用方法。可能嗎?如果是這樣,我如何在下面的示例中讀取流輸出的內容?另外,我需要兩個功能分開,這樣我可以返回的文本文件如何從StreamingOutput讀取數據

@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語句..我沒有把它,因爲我不知道如何構造它。

回答

2

func1不返回任何東西,甚至沒有st

您應該將要使用的通用代碼從func1func2移至第三個private方法。這個方法應該返回一些可以包裝在StreamingOutput實例中的東西。

+0

我非常抱歉..我的意思是把一個return語句放在func1中。我已經把它放在那裏。在func2中,沒有返回,因爲我沒有看到返回的結構,但它也打算返回響應 – user3272925 2015-01-22 04:32:43