👨🏻💻 热爱摄影的程序员
👨🏻🎨 喜欢编码的设计师
🧕🏻 擅长设计的剪辑师
🧑🏻🏫 一位高冷无情的编码爱好者
大家好,我是全栈工程师
欢迎分享 / 收藏 / 赞 / 在看!
【问题】使用若依微服务框架时,控制台报出如下错误,导致服务一段时间后下线。
请求地址'/operlog',发生未知异常.
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens
Caused by: com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens
【原因】
请求接口参数值内容过大,超出当前设置的最大参数长度,部分内容被截取,导致 json
字符串不完整,解析出问题。
【解决】
三种方式解决:
-
减小参数的长度
-
去掉对应方法的 @Log 注解
-
调整 Feign 配置中 min-request-size 的值
min-request-size 在 Feign 的配置中,表示启用压缩功能。
当请求的主体数据大于 min-request-size 配置值时,Feign 将会对请求数据进行压缩。这是为了减少网络传输的数据量,从而加快传输速度并降低网络拥塞。
在这个配置中,min-request-size: 10240 表示只有当请求的主体数据大小超过 10240 字节时才会进行压缩。如果请求的主体数据小于或等于
10240 字节,则不会进行压缩。
# feign 配置
feign:
compression:
request:
enabled: true
min-request-size: 10240