如何获取Java中的HTTP响应大小(以字节为单位)

时间:2012-03-14 19:09:51

标签: java http request response

我有一个Java Servlet和相应的HttpServletRequest / HttpServletResponse个对象。我需要找出发送回客户端的响应的大小(以字节为单位)。简单的问题,但这是非常困难的,我找不到任何好的例子。

首先,HttpServletResponse类有一个返回ServletOutputStream但没有大小/长度信息的方法。

HttpServletResponse.getOutputStream()  :  ServletOutputStream

有些人指向Apache Commons'CountingOutputStream并且您可以在使用数据时将其“包装”或“转发”到主输出,答案中没有给出实际代码而我无法让它工作。任何具有特定代码示例的解决方案都将受到赞感谢。

servlet仍然需要像往常一样工作,它只需要在每个循环中捕获响应大小。

1 个答案:

答案 0 :(得分:4)

由于响应是连续写入的,因此您有两种选择:

  • wrap HttpServletResponse以返回您自己的OutputStream包装器,而后者又会计算写入其中的字节数
  • 使用tomcat Valve logging