FeignClient响应体读取字节流大小异常

文章探讨了在使用FeignClient进行系统间调用导出Excel文件时遇到的问题,即文件损坏或数据不全。问题源于系统一在响应体中获取文件长度不稳定,由于InputStream的available()方法在网络传输中可能出现数据分批到达的情况,导致无法准确获取完整数据。解决方案可能涉及改进数据接收策略以适应网络传输的特性。

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

场景:
系统一通过FeignClient进行调用系统二导出Excel文件时,系统一导出的文件损坏或数据不全问题

问题寻找思路:
通过postman调用系统二的接口并下载文件并没有出现之前问题,也就是文件损坏或者是文件丢失数据问题。然后进行系统一的调查,每次请求响应体的长度都不一致,导致文件输出失败。

问题确定:
进行各种资料查找后,观察到文件的生成是先通过response.asInputStream,再通过response.availabel()生成一个字节数组,然后进行返回,但是这里有一个问题,InputStream类的available()方法读取字节的时候,能知道有多少字节需要读取,这个方法从本地读取数据一般不会出现什么问题。但是通过网络FeignClient传输就有可能出现数据间断传输问题,因为网络通讯是间断性的一串字节往往分几批进行发送。本地程度调用availabel()方法有时得到0,这可能是对方还没有响应,也可能是对方已经响应了,但是数据还没有送达本地。对方比如发送了9000个字节给你,可续分成3批到达,这就可能得调用3此available()方法才能将数据总数全部得到。

转自FeignClient响应体读取字节流大小异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值