远程传参数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来处理)
本文介绍了远程传输byte[]数组时出现数据失真的问题及解决办法。通过将byte[]数组转换为String,利用Base64编码进行传输,有效避免了数据在传输过程中的变化。
754

被折叠的 条评论
为什么被折叠?



