Http持久连接并在Android上从wi-fi切换到蜂窝

时间:2012-05-24 19:23:29

标签: android linux http networking tcp

我看到一些奇怪的行为/错误,似乎只有在从Wi-Fi切换到蜂窝时才会发生。其中一个是以下例外:

  

java.net.SocketTimeoutException:未连接套接字   org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(母语   方法)at   org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocket(OSNetworkSystem.java:131)   在   org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:247)   在   org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:535)   在java.net.Socket.connect(Socket.java:1071)at   org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection。(HttpConnection.java:62)   在   org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager $ ConnectionPool.getHttpConnection(HttpConnectionManager.java:145)   在   org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager.getConnection(HttpConnectionManager.java:67)   在   org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getHTTPConnection(HttpURLConnection.java:821)   在   org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:807)   在   org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1150)   在   com.nexage.android.reports2.AdReport2 $ ReportTask.run(AdReport2.java:492)   在java.util.Timer $ TimerImpl.run(Timer.java:290)

这可能是由于某种持续的连接导致“卡住”造成的吗?如果是这样,有没有办法重置连接?我知道HTTP应该是无状态的,我不知道有什么方法可以“重置”HTTP连接,但我认为在操作系统级别可能存在一些错误,即使连接是破碎。

谢谢,我一直试图解决这个问题一个星期,但还没有任何线索!

1 个答案:

答案 0 :(得分:0)

您是否检测到网络交换机并重新建立HTTP会话?当您切换网络类型时,您的HTTP / TCP连接将被关闭,导致类似于您再次尝试使用时看到的错误。

顺便说一下,持久的HTTP连接并不意味着当你断开网络连接时它会持久存在。这意味着,在大多数情况下,您可以通过同一连接发送多个请求。