Tôi có khối mã sau:Tại sao giá trị thời gian chờ không được HttpURLConnection của android tôn trọng?
try {
URL url = new URL("http://site-to-test.com/nonexistingpage.html");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestProperty("User-Agent", CoreProtocolPNames.USER_AGENT);
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(500); // timeout is in milliseconds
urlc.connect();
if (urlc.getResponseCode() == 404) {
// Server was reachable
Log.i(TAG, "Server is reachable");
}
} catch (MalformedURLException mue) {
Log.e(TAG, "MalformedURLException: " + mue.getMessage());
} catch (IOException e) {
Log.e(TAG, "IOException: " + e.getMessage());
}
Khi miền site-to-test
là không thể truy cập thông qua mạng lưới hiện nay, mã này khối trong khoảng 30-40 giây trước khi nhận IOException
. Và tôi đặc biệt đặt giá trị thời gian chờ là 500 mili giây. Tôi đang thiếu gì ở đây? Không nên các khối trên chấm dứt trong nửa giây, bất kể trạng thái mạng và tính khả dụng của trang web?
bạn có thể sử dụng TimerTask và Hẹn giờ với nhau để đặt giới hạn .... –
BTW, bạn đang làm điều này trên một 'Thread' riêng biệt (hoặc 'AsyncTask'), phải không? –
Có, Alex, tôi sẽ không mơ ước chặn chuỗi giao diện người dùng. –