【问题标题】:How to Get the HTTP Response Size in Java (in Bytes)如何在 Java 中获取 HTTP 响应大小(以字节为单位)
【发布时间】:2012-03-14 19:09:50
【问题描述】:

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

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

HttpServletResponse.getOutputStream()  :  ServletOutputStream

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

servlet 仍然需要照常工作,它只需要捕获每个周期的响应大小。

【问题讨论】:

  • 您需要如何处理响应大小以及何时?在发送响应之前还是之后?您是否尝试使用此数字来设置 HTTP Content-Length 标头?
  • 我确定周围的某个地方也有同样的问题
  • 有同样的问题,没有具体的代码。我想看看有效的具体代码。

标签: java http request response


【解决方案1】:

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

  • 包装 HttpServletResponse 以返回您自己的 OutputStream 包装器,该包装器依次计算写入它的字节数
  • 使用tomcat Valve logging

【讨论】:

  • 谢谢,但这对我来说还不够。我需要查看我可以运行的特定代码并且可以运行。
  • 这不是一个“写我的代码”网站。我告诉你怎么做,你应该只写代码。有不明白的地方,说清楚
猜你喜欢
  • 2013-02-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多