HttpURLConnection getResponseCode() deos nicht zurück, wenn es keine Internet-Verbindung
Ich bin mit einem HttpURLConnection
um zu überprüfen, ob die server-URL erreichbar ist oder nicht, indem mit dem folgenden code:
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;
}
Dieser code funktioniert unter normalen Bedingungen. Aber wenn es keine Internet-Verbindung (weil entweder der router ist nicht angeschlossen oder nicht die hotspot), httpConnection.getResponseCode()
wird nicht ausgeführt (die Funktion nicht zurück). Wie kann ich dieses Problem beheben?
- Versuchen Sie, ein code-snippet in
TRY CATCH Block
. Was ich vermute ist(HttpURLConnection) knownURL.openConnection();
wirft eine socket exception, wenn es kein internet, so dass Sie nicht bis an ` httpConnection.getResponseCode();` - knownURL.openConnection() ausgeführt wird, und es kommt nicht zu catch-block. Es ist halt auf beim Aufruf getResponseCode()
- versuchen Sie Debuggen. Und ja, Sie werden immer eine Ausnahme. Das ist, warum. Überprüfen Sie Ihre logcat und poste hier vielleicht.
- HttpUrlConnection funktioniert ohne internet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
httpConnection.setConnectTimeout(5000)
ist ein timeout für die Verbindung.
Dies ist nicht ein timeout für
httpConnection.getResponseCode()
.Wenn Sie hinzufügen
httpConnection.setReadTimeout(2000)
,httpConnection.getResponseCode()
sollte eine exception werfen, wenn keine Verbindung verfügbar ist.Können Sie mit einem try-catch-block auf höherer Ebene, das den Fang der sockettimeout exception.