The request body did not contain the specified number of bytes

问题:安卓android使用HttpUtils上传图片直接连tomcat可以上传,经过nginx然后在转发到tomcat报错400

通过使用抓包工具发现408错误:The request body did not contain the specified number of bytes. Got 32,592, expected 1,050,182。

原因:content-length配置长度比实际的小没事,配置的比实际的长度大会报错,校验不通过。而我上传图片的时候做了压缩,

bitmap.getByteCount()是压缩前的大小,跟压缩后传输的不一致

 //读取文件并压缩
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "a/source.jpg";
Bitmap bitmap= BitmapFactory.decodeFile(path);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
boolean success =  bitmap.compress(Bitmap.CompressFormat.JPEG, 35, stream);
InputStream inputStream = new ByteArrayInputStream(stream.toByteArray());

params.addBodyParameter("file",inputStream,bitmap.getByteCount(),"123456");

解决:改成传输的实际大小。

params.addBodyParameter("file",inputStream,stream.toByteArray().length,"123456");

参考:https://blog.youkuaiyun.com/u013908944/article/details/87867213

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值