2017-07-22 1 views
-1

Ich habe versucht, herauszufinden, warum die Servlets werden die Bytes an den Client mit diesem Code nicht zurück (obwohl die Bytes auf den Protokollen gelesen basiert):HttpServletResponse nicht Bytes Client streamen

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

Hier ist die Klassenhierarchie "SelfInjectingRedirector erweitert Redirector" und "Redirector erweitert Restlet" wie in org.restlet.Restlet – xybrek

+0

Da dies nichts Standard verwendet, ist es wirklich unmöglich zu sagen. Was ist "Antwort"? Was ist "ServletUtils"? Was ist FileStore? – stdunbar

+0

Es ist Restlet (siehe Tag) – xybrek

Antwort

0

die Lösung ist die "Content-Length" Header hinzuzufügen.

Verwandte Themen