以前在博客裏推薦使用OkHttp來替換HttpClient、HttpUrlConnection,項目上線之後發現打臉了。
打臉歸打臉,錯誤還得及時糾正。服務器
最近項目引入OkHttp上線之後,收到用戶反饋說軟件沒法獲取服務器信息。
感謝用戶的配合,讓我找到了OkHttp這個隱藏比較深的bug。code
OkHttp2.0有Bug,如今還不適宜引入項目代替HttpClient、HttpUrlConnectionhtm
首先須要聲明,不是全部設備都能重現,僅少許設備會出現這個問題。(若是問題這麼明顯,OkHttp早就修復了)blog
酷派大神F1, 刷了MIUIget
OkHttp2.0 Okio1.0博客
10-29 17:18:30.036: W/System.err(20871): java.io.EOFException 10-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版本里面解決。
Github issue連接
==========Update=================
Issues-1518顯示彷佛已經修復,產品使用OkHttp2.5後很多用戶反映已經能夠使用