版权声明:
欢迎转载,但请保留文章原始出处
作者:
出处:
之前在博客里推荐使用OkHttp来替换HttpClient、HttpUrlConnection,项目上线以后发现打脸了。
打脸归打脸,错误还得及时纠正。问题
最近项目引入OkHttp上线以后,收到用户反馈说软件无法获取服务器信息。
感谢用户的配合,让我找到了OkHttp这个隐藏比较深的bug。提醒
OkHttp2.0有Bug,现在还不适宜引入项目代替HttpClient、HttpUrlConnection
Bug描述
首先需要声明,不是所有设备都能重现,仅少量设备会出现这个问题。(如果问题这么明显,OkHttp早就修复了)
设备
酷派大神F1, 刷了MIUI
项目中使用的OkHttp库
OkHttp2.0 Okio1.0
Log崩溃信息如下
10-29 17:18:30.036: W/System.err(20871): java.io.EOFException10-29 17:18:30.040: W/System.err(20871): at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:154)10-29 17:18:30.041: W/System.err(20871): at com.squareup.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:189)10-29 17:18:30.044: W/System.err(20871): at com.squareup.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:101)10-29 17:18:30.045: W/System.err(20871): at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:676)10-29 17:18:30.046: W/System.err(20871): at com.squareup.okhttp.Call.getResponse(Call.java:205)10-29 17:18:30.047: W/System.err(20871): at com.squareup.okhttp.Call.execute(Call.java:80)10-29 17:18:30.048: W/System.err(20871): at com.czt.okhttpdemo.MainActivity$1.run(MainActivity.java:34)
查到Github issue里显示,有些用户在2.0正式版之前是没有问题的,但是2.0时候确实存在这个bug,而且一直也没有修复。
官方答复
出现这个bug后,我也反馈给了OkHttp,他们现在标记在2.3版本里面解决。
==========Update=================
显示似乎已经修复,产品使用OkHttp2.5后不少用户反映已经可以使用