我有一個彈簧啓動應用程序。現在我需要在interceptor.I讀取請求和響應使用HttpServletRequestWrapper
在DispatcherServlet
如何在攔截器中讀取httpServletResponse?
@Component("dispatcherServlet")
public class FofDisPatcherServlet extends DispatcherServlet {
@Override
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
MultiReadHttpServletRequest requestWrapper = null;
try {
requestWrapper = new MultiReadHttpServletRequest(request);
super.doDispatch(requestWrapper, response);
} catch (Exception e) {
super.doDispatch(request,response);
}
}
}
而在我的攔截,請求更換,我可以讀請求主體。但是當我想讀取響應主體時,它不起作用。當我替換CustomerDispatcherServlet
中的響應時,我沒有得到任何響應。我試過ContentCachingResponseWrapper
,但是我用「」得到了有效載荷。
這是一個古老的問題。我搜索了一些問題,但沒有找到合適的解決方案。
我知道我可以用AOP
來解決問題,但是我想知道在攔截器中怎麼做?
這裏是我的代碼攔截
public class CustomerInterceptor extends HandlerInterceptorAdapter{
@Override
public void postHandle(...){
MultiReadHttpServletRequest req = (MultiReadHttpServletRequest) request;
ContentCachingResponseWrapper res = new ContentCachingResponseWrapper(response);
Byte[] body = res. getContentAsByteArray();
...
}
}
我身體是[]。
你能分享更多的代碼?你如何使用ContentCachingResponseWrapper?正如javadoc說你應該調用'getContentAsByteArray()'方法來檢索內容 – Leffchik
是的,我使用'getContentAsByteArray()',但我得到的內容與「」。 – linghu
你能分享攔截器代碼嗎,問題出在攔截器部分。 –