Feign调用请求数据过大,传输的JSON被截取导致报错问题

最近在写代码时,遇到了一个问题。在使用Feign进行服务间调用时,我尝试传递了一个非常大的JSON数据,结果被截取掉了,导致JSON格式不完整,从而引发了错误。错误信息是这样的:

Caused by: com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, , \t) is allowed between tokens at [Source: (PushbackInputStream); line: 1, column: 2]

我在网上查阅了很多博客,看到有人说需要更改配置文件,类似于下面的示例:

# feign 配置
feign:
  compression:
    request:
      enabled: true
      min-request-size: 8192
    response:
      enabled: true

然而这个方法在我们的项目中并没有起作用。无奈之下,我只能想出一个临时办法,先把数据扔到Redis中,然后在跨服务调用时再从Redis中获取要使用的数据。但这个方法显然不是最佳实践,我只能继续寻找解决方案。

直到晚上下班回家后,我突然有了灵感,既然传输JSON会导致被截取掉报错,那我为什么不直接传输字符串呢?于是立马行动起来,到家开机,巴拉巴拉写了一串代码。首先将要传输的数据经过Base64转码,然后再通过网络进行跨服务调用。

代码编写完成后,我立即启动服务进行验证。然而发现还是报错了。仔细一瞧,原来是请求头内容太大了!于是我想只要解决这个问题,跨服务报错的问题应该就解决了。

于是我在nacos的application.yml配置文件中添加了以下配置信息:

server:

 max-http-header-size: 16384

重新启动本地nacos服务器后,然后启动服务进行测试。哇塞!居然成功了!舒服!虽然这个方法可能不是最优解,但至少它解决了我当前的问题。当然,我也希望各位大佬能多多指教,给我提供更好的解决方案。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值