安卓 :I / O异常,并且无法从WiFi过渡到某些特定WiFi的3G



在我的Android应用程序中,有一致且频繁的服务器请求和响应。如果我使用 WiFi 启动应用程序,则退出并使用 3G 重新启动。对服务器的请求失败,并出现 IO 异常。

观察:这只发生在少数WiFi范围内。在WiFi-3G过渡期间,它在我的家中运行良好。WiFi(家庭和办公室)都使用WPA/WPA2安全协议,但表现出不同的行为。当IO异常发生时,我什至尝试创建一个新套接字,但没有帮助。但它在 10-15 分钟后工作正常。应用程序自动连接到正确的网络,应用程序启动!

这里可能有什么问题?

这是一段代码

public String readFromUrl(String urlString) {
    try {
        URL url = new URL(urlString);
        urlConnection = (HttpURLConnection) url.openConnection();
        BufferedReader in = new BufferedReader(new  InputStreamReader(urlConnection.getInputStream()));
        String line;
        while ((line = in.readLine()) != null)
            output.append(line);
        return output;
    } catch (IOException e) {
        e.printStackTrace();
    }
}

它失败并出现异常:

java.net.SocketTimeoutException: Connection timed out
 W/System.err( 2615): at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
 W/System.err( 2615): at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)
 W/System.err( 2615): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204)
 W/System.err( 2615): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)
 W/System.err( 2615): at java.net.Socket.connect(Socket.java:1002)
 W/System.err( 2615): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75)
 W/System.err( 2615): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)

可能发生的情况是,当手机从 3G 切换到 Wifi 时,您正在进行连接。手机今天不知道如何从3G切换到WiFi,因此必须首先打破3G连接,因此IOException。

最新更新