6

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?

+0

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(); ' –

+0

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

+0

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

Trả lời

0

Bạn có thể có khối thử bắt ở lớp cao hơn đang bắt ngoại lệ sockettimeout.

+0

đã cố gắng rằng nó vẫn không đến để bắt khối – mindus

4

httpConnection.setConnectTimeout(5000) là thời gian chờ kết nối.

Đây không phải là thời gian chờ cho httpConnection.getResponseCode().

Nếu bạn thêm httpConnection.setReadTimeout(2000), httpConnection.getResponseCode() nên ném ngoại lệ khi không có kết nối.

+0

Điều này có vẻ như nó sẽ gây ra getResponseCode() để bắt đầu ném TimeOutExceptions. Đã làm nó? Tôi có vấn đề tương tự và đang tìm kiếm giải pháp đơn giản, mà không phải tự mình lập trình thời gian chờ. –

+0

Đây phải là giải pháp được chấp nhận –

Các vấn đề liên quan