有人可以帮助我如何计算流量(进/出)。
我有获取 API 请求的应用程序,每个请求都存储在数据库中以供统计。我需要为每个请求和响应存储流量大小。
从HttpServletRequest我可以轻松获得请求的大小,但我如何才能获得响应大小?
还使用了 ProceedingJoinPoint。
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.
}
}