前言
最近在做微信支付,进件接口需要上传图片信息,使用的是微信的sdk,但是一直返回400
正文
代码就是官方demo中的代码
如果不把response中的body输出出来的话,是没办法定位到问题的,会一直返回400
加上下面的代码就可以查看body中的返回的信息
String json = EntityUtils.toString(httpEntity);
最后发现提示的是图片为空
这个很诡异,为什么会为空呢?
原来是因为
InputStream byteArrayInputStream = new ByteArrayInputStream(file.getBytes())
String sha256 = DigestUtils.sha256Hex(byteArrayInputStream);
进行图片加密的时候流里面的东东貌似不太对劲
需要进行下面的操作
byteArrayInputStream.reset();
这样就可以了
结语
看来还是需要仔细往下分析,不要觉得返回400就是签名的问题,打印出来具体的问题后,就可以继续修改和排查了!