后端开使用Java语言开发,项目是springboot项目,修改配置类 OkHttpConfiguration

尝试解决办法:

1. 修改配置类中的 OkHttpClient Bean对象的中的retryOnConnectionFailure属性如下图:

2.具体调用方法设置Request对象设置请求后关闭webSocket连接

以上两种方法仅限个人尝试,并不一定能解决!,使用第二种方法后没有再出现该问题!

排查与解决 java . io . EOF Exception : \n not found: limit =0 content =… 起因是项目向华为云 OBS 请求视频, 偶现题目中的异常;如果等一段时间(30s),就可以正常读取到视频。 原因是 OBS SDK 底层用的 Okhttp 连接池,而 Okhttp 的 GitHub 上也有相关 issue: 服务器在返回数据后就直接关闭 TCP 连接,而客户端(项目应用)却将连接放入连接池重复使用; 当下次请求复用时,连接已经被关闭,就读取不到返回值,报上述异常。 在一次使用 OkHttp 对接两个第三方接口的时候遇到了这个报错,情景是这样的,先请求第一个接口得到一个结果,再把第一个结果作为参数传到第二个接口,但是第二个接口一直报这个错误。2 添加请求头 addHeader(“Connect io n”, “close”)或addHeader(“Connect io n”, “keep-alive”)试遍了安卓的网络框架都是这样,最后才断点发现是第一个接口返回的数据是Url编码过的,第二个接口直接传未解码的数据就是会报错,最后解码再传就正常了,真坑啊,浪费时间。 1、如果你没有使用 OkHttp Client单例模式的话,而是每次都new 一个 OkHttp Client 在大量的请求下,很容易就会出现OOM 因为 OkHttp Client 每new 一个 就会创建一个线程池,线程池默认有5个线程,不断new 就会出现OOM 2、在使用 OkHttp Client 单例模式的情况下,出现 IO Exception EOF Exception 类似如下: java . io . IO Exception : unexpected end of stream on Connect io n{xxx, 请求方式 ----> POST Http 版本:http/1.1 请求头 ----> Content -Type: applicat io n/x-www-form-urlencoded 请求参数 ----> token: ZEdsaGJtaHZibWRtWVc0PSRkR2xoYm1odmJtZG1ZVzQ9JE1UWXlOVFExTmpFM05TNDNNVEE0JDRjNDRjZDkwZjViYzBkYzIwMDU3NWM1ZjU3NTYwZDYwu;... 由于此问题不是必现,故不太好定位排查,根据关键异常信息: EOF 一般指输入流达到末尾,无法继续从数据流中读取; 怀疑可能是由于双方(client<->server) 建立的连接,某一方主动close了,为了验证以上猜想,笔者查阅了相关资料,以及做了一些简单的代码实验 Github Issue or google or stackoverflow? 根据@... 今天遇到一个 OkHttp Client的坑,报错信息如下: [20200320 10:47:10.553] | [ERROR] | [localhost] | [http-n io -28080-exec-22] | [c.u.] | [unexpected end of stream on okhttp3 .Address@fe4f10d5] | ` java . io . IO Exception : unexpe... java . io . EOF Exception 不是一个常出现的问题,而且并发症 java .lang.NullPointer Exception (空指针异常),只有objectInputStream.readObject();接收为null且1.txt文件为空时才会出现 EOF Exception 只需要捕获,该bug在本场景下被捕获后程序就不会终止了,甚至不处理也行。