远程传参byte[]数组 接收到后数组值改变解决办法 && request header too large解决办法

本文介绍了远程传输byte[]数组时出现数据失真的问题及解决办法。通过将byte[]数组转换为String,利用Base64编码进行传输,有效避免了数据在传输过程中的变化。

远程传参数byte[] 数组,当接收端获取到值后发现数组失真,值和长度都发生了改变;

 

解决方法:

byte[]数组转String,接收后再转回byte数组

base64对byte数组进行编码,进过编码后得到String传输到对端解码得出byte数组。

String str = Base64.encodeBase64String(bytes);
byte[] bytes = Base64.decodeBase64(str);

注意:①这里的String参数传递有时需要用POST方法,且参数注解为@requestBody而不是@requestParam方式,否则会报错 request header too large

        ②要用base64编码而不是 String str = new String(bytes);byte[] bytes = str.getBytes()这种方式;;因为当byte数组有负值时,转为String再转回来时会发现byte数组中的值发生了改变,(猜测是因为编码问题,因此采用Base64来处理)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值