关于Galaxy Nexus的奇怪的EOF异常

时间:2011-12-13 10:39:58

标签: android android-4.0-ice-cream-sandwich

我的Android应用程序使用URLConnection连接到Web服务。它已经在市场上销售了一年多,效果很好。但是,最近出现了Galaxy Nexus用户的问题:

URLConnection获取输入流(甚至还没有读取!)时:

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

EOFException投放getInputStream()

首先我认为这可能是一个ICS问题,所以我在Nexus S上安装了早期版本,但在那里我无法重现这个问题。然后我就可以访问Galaxy Nexus,它与我收到的错误报告一样崩溃,这让我相信这可能不是一部手机表现得很奇怪的情况。

可以看到崩溃的堆栈跟踪here以及GitHub上的整个代码。这真的很奇怪,该应用程序在Android Market上安装了大约100k +,这个问题似乎只出现在Galaxy Nexus上。

任何提示或建议都将不胜感激!

2 个答案:

答案 0 :(得分:6)

我在ICS上看到同样的错误,我通过禁用keepAlive来“修复”它:

    System.setProperty("http.keepAlive", "false");

答案 1 :(得分:0)

在我的应用程序开发过程中,我在Xperia Arc S(Note!Non-ICS)上看到了同样的问题。我几乎可以肯定,我们看到了两个不同问题的相同症状。

在我的情况下,我将整个流作为UTF8 String读取,但服务器端实现期望我将第一个字节读作数字byte,其余部分读作UTF8 {{ 1}}。

我不确定为什么真的得到String的细节,但是阅读流,注意其中的自定义协议中的类型,解决了我的问题