Ich habe folgenden Codeblock:Warum Timeout-Wert von Android HttpURLConnection nicht eingehalten wird?
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());
}
Wenn die site-to-test
Domäne nicht erreichbar durch das aktuelle Netzwerk ist diese Code-Blöcke für etwa 30-40 Sekunden, bevor die IOException
empfängt. Und ich habe den Timeout-Wert speziell auf 500ms eingestellt. Was fehlt mir hier? Sollte die oben genannte Blockierung nicht innerhalb von einer halben Sekunde enden, unabhängig vom Netzwerkstatus und der Verfügbarkeit der Site?
benötigen, können Sie verwenden, und Timertask Timer zusammen um Limit zu setzen .... –
BTW, du machst das auf einem separaten 'Thread' (oder' AsyncTask'), oder? –
Ja, Alex, ich würde nicht davon träumen, den UI-Thread zu blockieren. –