0

有人可以帮助我如何计算流量(进/出)。

我有获取 API 请求的应用程序,每个请求都存储在数据库中以供统计。我需要为每个请求和响应存储流量大小。

HttpServletRequest我可以轻松获得请求的大小,但我如何才能获得响应大小?

还使用了 ProceedingJoinPoint

4

1 回答 1

0

OutputStream您可以通过包装使用的 in来计算写入的字节数HttpServletResponse(也可以包装响应)

public class CountingFilter implements Filter {

   public void doFilter(...) {
       chain.doFilter(request, new SizeCountingHttpServletResponse(response));
   }

   public static class SizeCountingHttpServletResponse extends HttpServletResponseWrapper {

      ....
      @Override
      public OutputStream getOutputStream() {
          return new CountingOutputStream(super.getOutputStream());
      }
      // same with getWriter()..
   }

   public static class CountingOuputStream extends OutputStream {
       private int size;
       // delegate all methods to the original OutputStream
       // count the number of byte written and store in the 'size' field.
   }

}
于 2013-06-10T15:00:23.460 回答