2011-12-13 60 views
4

我的Android應用程序使用URLConnection連接到web服務。它在市場上已有一年多的時間,並且運作良好。然而,隨着Galaxy Nexus的用戶的問題,最近想出了:Galaxy Nexus上的怪異EOFException

當從URLConnection獲取輸入流(甚至不讀書呢!),如:

final BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()), 8192); 

一個EOFExceptiongetInputStream()被拋出。

首先,我認爲這可能是一個ICS問題,所以我在我的Nexus S上安裝了一個早期版本,但在那裏我無法再現問題。然後,我得到了一個Galaxy Nexus,它與我收到的錯誤報告一樣崩潰,這使我相信這可能不是一個奇怪的電話。

崩潰的堆棧軌跡可以看到hereGitHub上的整個代碼。這真的很奇怪,該應用程序在Android Market上安裝了10萬多個安裝程序,而且這個問題似乎只發生在Galaxy Nexus上。

任何提示或建議將不勝感激!

+0

它也發生在我的充滿活力的運行ICS。 – 2011-12-14 20:31:30

回答

0

在我的應用程序開發過程中,我在我的Xperia Arc S(注意非ICS)上看到了同樣的問題。不過,我幾乎可以肯定,我們看到了兩個不同問題的相同症狀。

在我來說,我讀了整個流作爲UTF8 String,但在服務器端實現期待我讀的第一個字節的數字byte和它的其餘部分爲UTF8 String

我不知道爲什麼我的真的得到了EOFException,但是閱讀該流,注意自定義協議中的類型,解決了我的問題。

+1

謝謝! Google Code上的錯誤跟蹤器還有一些提示。會讓你知道結果如何。 – phreezie

+1

實際上,我連接的服務器沒有發送「連接:關閉」標題。明確地將其添加到客戶機頭解決了問題。 – phreezie

+0

啊!真是個混蛋(服務器,就是這樣)。我必須檢查這是否也可能是我的症狀的根本原因。跟蹤這個錯誤的好工作,並感謝分享! – dbm

6

我看到在ICS同樣的錯誤,我通過禁用的keepAlive「固定」它:

System.setProperty("http.keepAlive", "false"); 
相關問題