有人可以帮助我了解如何计算流量(进/出)。
我有app获取API请求,每个请求都存储在DB中以进行统计。我需要每个请求和响应的存储流量大小。
从 HttpServletRequest 我可以很容易地获得请求的大小但是我的响应大小如何?
还使用 ProceedingJoinPoint 。
答案 0 :(得分:0)
您可以通过包装OutputStream
中使用的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.
}
}