我的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上。
任何提示或建议都将不胜感激!
答案 0 :(得分:6)
我在ICS上看到同样的错误,我通过禁用keepAlive来“修复”它:
System.setProperty("http.keepAlive", "false");
答案 1 :(得分:0)
在我的应用程序开发过程中,我在Xperia Arc S(Note!Non-ICS)上看到了同样的问题。我几乎可以肯定,我们看到了两个不同问题的相同症状。
在我的情况下,我将整个流作为UTF8 String
读取,但服务器端实现期望我将第一个字节读作数字byte
,其余部分读作UTF8 {{ 1}}。
我不确定为什么真的得到String
的细节,但是阅读流,注意其中的自定义协议中的类型,解决了我的问题