同事写了个http接口,我通过springCloud-feign调了一晚上一直熔断,让我开始怀疑我是不是在下一批的裁员名单中

本文探讨了在使用SpringCloud框架的A服务通过Feign客户端调用B服务时遇到的HttpMessageNotReadableException,重点在于解决返回内容中的非法字符问题。通过排查发现,问题源于B服务的返回内容被压缩,解决办法是关闭B服务的请求压缩功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提:项目框架基于springcloud,我的A服务需要调用B服务的接口,服务正常注册在nacos上,服务也没有做负载,

过程:通过feignclient 调用B服务的接口,控制台报错

nested exception is 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;

直接返回了熔断器的内容

排查发现,请求可以顺利调用B服务的接口并在B服务中返回结果。在postman测试该接口确实正常。问题来了:返回到A服务中就直接熔断,开始疯狂百度得到两个方向排查:1-序列化。2-返回的内容解压缩;

后来无意间发现B服务的配置设置开启压缩模式

 后来想想为啥postman等工具能调通接口,是因为默认支持解压gzip

所以最终解决方案是:关闭请求压缩功能

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值