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