2012-05-24 40 views
0

我看到一些奇怪的行为/错误似乎只发生在从Wi-Fi切换到蜂窝时。其中之一是以下异常:HTTP持久连接和切换从Wi-Fi到蜂窝Android

java.net.SocketTimeoutException:套接字未在 org.apache在 org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(本地 法)连接。 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) at java.net.Socket.connect(Socket.java:1071)at org.apache.harm ony.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(Http URLConnection.java:1150) 在 com.nexage.android.reports2.AdReport2 $ ReportTask.run(AdReport2.java:492) 在java.util.Timer中的$ TimerImpl.run(Timer.java:290)

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

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

回答

0

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

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