微信公众号流读取报错问题解决

 问题背景:微信大图片的情况下会出现超时的异常,或者20M的时候微信服务端5s没有返回会重试,所以会出现发俩张图片的情况。

问题一:java.io.IOException: Stream closed

 

微信公众号流读取报错问题解决_第1张图片

本地没有公众号环境或者没有第三方平台怎么操作?

一,使用微信测试平台调试本地接口。

二,配置微信所需要参数和配置

微信公众号流读取报错问题解决_第2张图片

 需要域名映射:

微信公众号流读取报错问题解决_第3张图片

 抓取微信接口去代码写循环测试:这里你只需要拿到这个地址 就行,把其他环境配置到这里回调都可以,本地测试也行。

微信公众号流读取报错问题解决_第4张图片

需要注意这里的解密参数要和项目里面的参数解密一致才能定位问题:

这里的返回信息可不用看主要看代码里面的参数加解密是否正常返回。

微信公众号流读取报错问题解决_第5张图片 

 这是后台解密出来的和线上是一致的xml微信公众号流读取报错问题解决_第6张图片

 因为这里我们定位到问题的原因是 request.getReader() 只能读取一次,如过下面在读取就会报错且不要使用while循环去读取流。罪魁祸首在这里。

BufferedReader in = request.getReader();
String line;
while ((line = in.readLine()) != null) {
    sb.append(line);
}

原因是应为异步返回后这个流出了问题,请求过多导致流关闭了,所以咋们去掉这样的方式改为

//获取request xml
List xmlList = request.getReader().lines().collect(Collectors.toList());

————没有与生俱来的天赋,都是后天的努力拼搏(我是小杨,谢谢你的关注和支持)

你可能感兴趣的:(java,开发语言)