[英]HttpURLConnection getResponseCode() deos not return if there is no Internet connection
我使用HttpURLConnection
通過使用以下代碼檢查服務器URL是否可用:
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;
}
此代碼在正常條件下正常工作。 但是當沒有Internet連接時(因為路由器斷開連接或熱點連接), httpConnection.getResponseCode()
不會被執行(函數不會返回)。 我怎樣才能解決這個問題?
httpConnection.setConnectTimeout(5000)
是連接超時。
這不是httpConnection.getResponseCode()
的超時。
如果添加httpConnection.setReadTimeout(2000)
, httpConnection.getResponseCode()
應在沒有可用連接時拋出異常。
你可能在更高層有一個try catch塊,它正在捕獲sockettimeout異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.