我正在尝试为我的Web应用程序创建请求日志。我正在使用Spring 3. 0.记录HttpRequest参数和请求正文
我实现了一个扩展为HandlerInterceptorAdapter
的类,并使用preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
来拦截请求。
在该方法中,我想能够登录请求主体(我的参数是直接写入请求主体的XML对象),并为我使用request.getReader();
的问题是 - 以后当弹簧控制器试图读取请求时,我会得到一个IllegalStateException
。
有没有办法做我想要的?
有几个问题。在ServletRequest中,您只能调用getReader()或getInputStream()。如果你同时调用你会得到一个IllegalStateException。你可以尝试调用getInputStream,但是如果你阅读了输入流,你可能会得到一个错误,Spring可能无法看到它。 (ServletInputStream可能支持重置,但我不这么认为)。 你最好的选择是在XML反序列化过程中(你应该找出这个类是什么类)或者之后立即记录参数。 – Pace 2011-06-12 14:31:26
您是否考虑过配置您的http服务器来记录请求头或使用servlet过滤器来执行日志记录? – happymeal 2011-06-12 14:42:15
@happymeal我不需要头部我需要身体以及。 – 2011-06-12 14:43:12