Java Android 3平板电脑上出现意外的SocketTimeoutException
我有一个应用程序,它使用Java Android 3平板电脑上出现意外的SocketTimeoutException,java,android,httpurlconnection,socket-timeout-exception,Java,Android,Httpurlconnection,Socket Timeout Exception,我有一个应用程序,它使用 final URL url = new URL("http", ip, 80, path); conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("Authorization", "Basic " + StringUtils.toBase64(user + ":" + pass)); conn.setConnectTimeout(timeout); conn.setReadTi
final URL url = new URL("http", ip, 80, path);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization", "Basic " + StringUtils.toBase64(user + ":" + pass));
conn.setConnectTimeout(timeout);
conn.setReadTimeout(timeout);
while (true) {
readLineAndOutputOk();
}
超时时间为60000。源每隔15秒返回一次数据,因此不应该有超时。但是在2:19打开url连接后,会抛出java.net.SocketException:connection timed out。我用华威Mediapad 7对其进行了测试。同样的代码在一些安卓2设备、手机和平板电脑上运行良好
有人已经遇到这个问题了,或者这个设备是特定的
编辑:(说明接收到数据且没有实际超时是原因。)
我记录了每隔15秒接收一次数据。没有停顿,没有断开的连接。
异常会在收到最后一个数据后引发,例如4s。SocketException从来都不是意外的。网络可能对设备不可用,例如,因为它的天线较弱。@lechlukasz:我知道可能会发生SocketException,但只有在指定时间(即60秒)内没有数据时,才应抛出“连接超时”。如果我可以肯定地看到数据在抛出的异常(值不同)之前到达4s,我不期望超时。更令人费解的是:它不是SocketTimeoutException(我期望的),而是带有超时消息的SocketException。这是安卓系统防止长时间连接的功能吗?