मैं निम्नलिखित कोड ब्लॉक है:एंड्रॉइड HttpURLConnection द्वारा टाइमआउट मान का सम्मान क्यों नहीं किया जाता है?
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
डोमेन वर्तमान नेटवर्क के माध्यम से पहुंच योग्य नहीं है, IOException
प्राप्त करने से पहले 30-40 के बारे में सेकंड के लिए इस कोड ब्लॉक। और मैं विशेष रूप से टाइमआउट मान 500ms पर सेट करता हूं। मुझे यहां क्या समझ नहीं आ रहा है? नेटवर्क स्थिति और साइट की उपलब्धता के बावजूद उपरोक्त ब्लॉक आधे सेकेंड में समाप्त नहीं होना चाहिए?
आप Timertask उपयोग कर सकते हैं और के लिए एक नमूना अपने HTTP कनेक्शन के लिए समय समाप्त की जांच की जरूरत है कार्यान्वित सीमा निर्धारित करने के लिए टाइमर एक साथ .... –
बीटीडब्ल्यू, आप इसे एक अलग 'थ्रेड' (या 'AsyncTask') पर कर रहे हैं, है ना? –
हां, एलेक्स, मैं यूआई थ्रेड को अवरुद्ध करने का सपना नहीं देखूंगा। –