0

在我的 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)
4

1 回答 1

0

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

于 2012-04-17T08:28:30.627 回答