Tôi đang sử dụng một HttpURLConnection
để kiểm tra xem URL của máy chủ có sẵn hay không bằng cách sử dụng đoạn mã sau:HttpURLConnection getResponseCode() deos không trở lại nếu không có kết nối Internet
try {
boolean connectionFailed = false;
URL knownURL = new URL("http://www.google.com");
httpConnection = (HttpURLConnection) knownURL.openConnection();
httpConnection.setConnectTimeout(5000);
responseCode = httpConnection.getResponseCode();
if (responseCode != 200) {
status = ConnectionStatus.NOT_CONNECTED;
}
}
catch(Exception e) {
connctionFailed = true;
}
Mã này đang làm việc tốt dưới điều kiện bình thường. Nhưng khi không có kết nối Internet (vì bộ định tuyến bị ngắt kết nối hoặc không phải là điểm phát sóng), httpConnection.getResponseCode()
không được thực hiện (chức năng không trả lại). Làm thế nào tôi có thể sửa lỗi này?
Cố gắng đặt đoạn mã trong 'TRY CATCH Block'. Những gì tôi nghi ngờ là '(HttpURLConnection) knownURL.openConnection();' ném một ngoại lệ socket khi không có internet, vì vậy bạn không đạt đến 'httpConnection.getResponseCode(); ' –
knownURL.openConnection() đang thực hiện và nó không đến để bắt khối. Nó dừng lại khi gọi getResponseCode() – mindus
thử gỡ lỗi nó. Và có, bạn đang nhận được một ngoại lệ. Đó là lý do tại sao. Kiểm tra logcat của bạn và đăng bài ở đây có thể. – Darpan