问题:安卓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