我正在嘗試爲我的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