我的应用程序使用以下代码连接到网站并下载网页进行处理。
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("User-Agent", "Mozilla/3.0 (compatible; MSIE 4.0; Windows NT)");
c.setRequestProperty("Accept-Language", "zh-hk");
c.setRequestProperty("Connection", "Keep-Alive");
c.setConnectTimeout(6000); // mTimeout is in seconds
intTries = 3;
do {
c.connect();
if (c.getResponseCode() == 200) {
break;
}
else {
intTries --;
}
} while (intTries > 0);
代码仅在主线程中运行。如果使用WiFi,它很干净。如果正在使用3G连接,有时它无法连接或应用程序HANGS。
处理WiFi和3G之间有什么显着差异吗?
感谢。
答案 0 :(得分:4)
代码仅在主线程中运行。
这不是一个好主意。请使用AsyncTask
或其他内容从主线程中获取该逻辑。您也可以考虑使用HttpClient代替HttpUrlConnection
,因为它也内置于Android中。
您可能还希望使用内置的浏览器应用程序测试您的URL。如果您得到类似的结果,那么您的无线运营商与您尝试访问的网站之间会发生一些事情。