为什么tomcat截断我的字节输出?

时间:2015-12-29 16:10:45

标签: tomcat servlets

我写了一个servlet来提供mp4文件。

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.reset();
    resp.setContentType("video/mp4");

    Path f = Paths.get(getServletContext().getRealPath("/WEB-INF/small.mp4"));
    int length = (int) Files.size(f);
    byte[] bytes = Files.readAllBytes(f);

    resp.setStatus(200);
    resp.setContentLength(length);

    ServletOutputStream sos = resp.getOutputStream();
    sos.write(bytes);
    resp.flushBuffer();
    sos.flush();
    sos.close();
}

mp4文件为1057148字节。 我使用Charles捕获了http消息,发现实际的主体大小小于我写的字节数。更奇怪的是实际的实体字节随着不同的请求而改变。

我不知道为什么tomcat会截断我的输出或者我错过了什么。

我的tomcat是Mac OSX 10.11.2上的apache-tomcat-8.0.27

现在我关闭了这个问题。我找到了原因。 Tomcat没有截断我的回复。这是查尔斯的问题。它显示:客户端在收到整个响应之前关闭了连接。

所以查尔斯似乎有一些错误。我使用Fiddler并发现响应保持了正常的预期。

0 个答案:

没有答案