java如何使用Spring MVC拦截HttpServletRequest
我正在使用Spring/Jackson将json自动转换为POJO。所有这些都可以正常工作,除了在执行头身份验证(使用过滤器)时。我一直在使用请求。getContentLength()获取json字符串的长度
这很好,直到json包含变音字符。其中,内容长度报告为长一个字符。显然,我必须得到实际的json主体。事实证明,这与调用请求一样困难。getInputStream导致Jackson失败,因为输入流已经关闭。getReader也是如此
所以,我已经做了这个博客中概述的:http://natch3z.blogspot.co.uk/2009/01/read-request-body-in-filter.html
它可以工作,但不能正确编码到UTF-8。所以我换了这一行:
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
致:
bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
它在我的日志中显示了正确的json,但当jackson尝试转换为pojo时,我出现了以下错误:
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0x9f
如果有人有什么想法的话,我不知道该怎么做
# 1 楼答案
我刚想出来:
我替换了这一行:
有了这个:
我应该早点意识到,但这可能会帮助其他人解决类似的问题