Android中HTTP請求出現“Received authentication challenge is null”異常和“Read timed out”解決

 
這兩天忽然收到Test Team告知公司Android客戶端一應用在部分手機上出現下述異常,部分又運行良好,很是奇怪:
1)HttpUtils/ getInputStream failed, e:Received authentication challenge is null
 
PS: 應用請求采用的是Java中的HttpConnection,而沒有使用HttpClient。
 
後來經過多臺手機的測試發現確實存在這樣的問題,而且是出現在android v4.04版本上的。後來查瞭下資料發現很多人也遇到瞭類似的問題,比如:
1) https://d.hatena.ne.jp/Kazzz/20100706/p1
2) https://www.cnblogs.com/slider/archive/2012/07/16/2593816.html
 
而且大傢都是使用的Java中的HttpConnection出的問題,都是在請求身份驗證的時候出現的。後來發現,是由於服務器返回瞭401錯誤之後(比如用戶名密碼錯誤的時候)。這個好像也是jdk的一個bug,我在buglist中找到過這個bug。但是不知道如何解決,於是,我把HttpConnection替換成瞭HttpClient,結果又出現瞭如下異常:
1)W/System.err(18984): java.net.SocketTimeoutException: Read timed out
 
於是又開始陷入瞭另一個坑裡,經過各種測試發現,原來是HttpClient中setSoTimeout(params, 0);設置的問題,原來我設置的是4s,後來修改為20s(這個值偶爾會出問題),後來我直接設置成0,問題解決。
 
這個問題耗瞭我太多的時間瞭,惱火啊。。。在這裡記錄一下,也給遇到同樣問題的朋友做個參考吧。
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *