2012-05-24 70 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連接並不意味着當你從網絡上斷開連接時它會持久。這意味着,在大多數情況下,您可以通過同一連接發送多個請求。