注意:本文出自 “阿飛”的部落格 ,如果要轉載本文章,請與作者聯絡!並註明來源: http://blog.csdn.net/faye0412/article/details/7970155
這兩天忽然收到Test Team告知公司Android用戶端一應用在部分手機上出現下述異常,部分又運行良好,很是奇怪:
1) HttpUtils/ getInputStream failed, e:Received authentication challenge is null
PS: 應用請求採用的是Java中的HttpConnection,而沒有使用HttpClient。
後來經過多台手機的測試發現確實存在這樣的問題,而且是出現在android v4.04版本上的。後來查了下資料發現很多人也遇到了類似的問題,比如:
1) http://d.hatena.ne.jp/Kazzz/20100706/p1
2) http://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,問題解決。
這個問題耗了我太多的時間了,惱火啊。。。在這裡記錄一下,也給遇到同樣問題的朋友做個參考吧。