2017-07-22 6 views
-1

私は、サーブレットは、このコードをクライアントにバイトを返さない理由を把握しようとしてきたにバイトをストリームしません(バイトはログに基づいて読み込まれている):HttpServletResponseのクライアント

Redirector redirector = new SelfInjectingRedirector(getContext(), targetPattern, 
     Redirector.MODE_SERVER_OUTBOUND){ 

    @Inject 
    FileStore fileStore; 

    String fileName = "something_for_sample"; 
    boolean isBufferFirst = true; 

    @Override 
    public void handle(Request request, Response response) { 
     try { 
      HttpServletRequest servletRequest = ServletUtils.getRequest(request); 
      HttpServletResponse servletResponse = ServletUtils.getResponse(response); 
      // 
      // Either statement here wont return the bytes to the client 
      // 
      if(isBufferFirst) { 
       byte[] bytes = fileStore.get(fileName); 
       System.out.println("Bytes read: " + bytes.length); // Bytes read: 5731 
       servletResponse.getOutputStream().write(bytes, 0, bytes.length) 
      } else { 
       fileStore.get(fileName, servletResponse.getOutputStream()); 
      } 
     } catch (Exception e) { 
      response.setStatus(Status.SERVER_ERROR_INTERNAL); 
      e.printStackTrace(); 
     } 
     System.out.println("Handle Done"); 
    } 

}; 
+0

org.restlet.Restletのように、 "SelfInjectingRedirector extends Redirector"と "Redirector extends Restlet"というクラス階層があります。 – xybrek

+0

これは何も標準的なものを使用していないので、実際には分かりません。 「レスポンス」とは何ですか? "ServletUtils"とは何ですか? FileStoreとは何ですか? – stdunbar

+0

It's Restlet(タグを参照) – xybrek

答えて

0

解決策は、「Content-Length」ヘッダーを追加することです。

関連する問題