Почему значение тайм-аута не учитывается HttpURLConnection Android?

У меня есть следующий блок кода:

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());
}

Когда домен site-to-testнедоступен через текущую сеть, этот код блокируется примерно на 30 -40 секунд перед получением IOException. И я специально установил значение тайм-аута на 500 мс. Что мне здесь не хватает? Разве вышеуказанный блок не должен завершаться через полсекунды, независимо от состояния сети и доступности сайта?

15
задан András Szepesházi 4 July 2012 в 12:37
поделиться