2011-12-20 21 views
8

मेरे पास एक एंड्रॉइड एप्लिकेशन है जो इंटरनेट से कनेक्ट होता है। मैं कनेक्शन के लिए सभी संभावित परिदृश्यों को फँस रहा हूं और ध्यान देता हूं कि जब मेरे पास इंटरनेट कनेक्शन नहीं है, तो UnknownHostExceptionthrown है। UnknownHostException प्राप्त करने के बाद से मैं थोड़ा उलझन में हूं इसका मतलब यह होगा कि एप्लिकेशन इंटरनेट से कनेक्ट करने में सक्षम था लेकिन दिए गए यूआरएल को खोजने में सक्षम नहीं था।इंटरनेट कनेक्शन त्रुटि

क्या मुझे सही अपवाद मिल रहा है? क्या आप समझा सकते हैं कि मुझे UnknownHostException क्यों मिल रहा है?

इसके अलावा, आप इन परिदृश्यों के लिए विशिष्ट अपवाद बता सकते हैं:

  • जब कोई इंटरनेट कनेक्शन नहीं है।
  • जब यूआरएल नहीं मिला।
  • जब अनुरोध का समय समाप्त हो गया।
  • जब वेबसाइट डाउन हो जाती है।
  • जब पहुंच अस्वीकार कर दी गई है।

मैं भी इसकी सराहना अगर तुम मुझे और अधिक परिदृश्यों और अपवाद दे सकता हैं। मुझे सभी संभावित कनेक्शनों को फंसाना है और कनेक्शन त्रुटि के प्रकार के आधार पर सबसे उचित संदेश प्रदर्शित करना है।

+0

अच्छा सवाल +1 –

+0

अगर आप अपने एमुलेटर से स्थानीय होस्ट कनेक्ट करने के लिए कोशिश कर रहे हैं आप 10.0.2.2 के रूप में यह देना है। – sampathpremarathna

उत्तर

11

अज्ञातहोस्टएक्सप्शन प्राप्त करने का अर्थ यह होगा कि एप्लिकेशनथा 210 इंटरनेट

कोई यह नहीं है करने के लिए कनेक्ट करने में सक्षम। इसका मतलब है कि एप्लिकेशन होस्ट नाम को हल करने में असमर्थ था। ऐसा इसलिए हो सकता है क्योंकि होस्ट का नाम मौजूद नहीं है, या क्योंकि यह इसे हल करने के लिए इंटरनेट से कनेक्ट करने में असमर्थ था।

जब कोई इंटरनेट कनेक्शन नहीं है।

कोई विशिष्ट अपवाद नहीं। "कोई इंटरनेट कनेक्शन नहीं है" में एक अच्छी तरह से परिभाषित अर्थ नहीं है। स्थिति नीचे दिए गए अन्य विफलता मोड में से एक को हल करती है।

जब यूआरएल नहीं मिला।

मेजबान नहीं पाया जा सकता है, तो UnknownHostException। URL की सामग्री हिस्सा नहीं पाया जा सकता है, तो HTTP 404.

जब अनुरोध का समय समाप्त।

साथ ConnectException संदेश के रूप में SocketTimeoutException 'कनेक्शन का समय समाप्त', या अगर यह एक पढ़ने का समय समाप्त है।

जब वेबसाइट डाउन हो जाती है।

ConnectException संदेश के रूप में 'कनेक्शन अस्वीकार' के साथ।

जब पहुंच अस्वीकार कर दी जाती है।

HTTP 403.

+0

धन्यवाद! तो यह निर्धारित करने का कोई तरीका नहीं है कि इंटरनेट कनेक्शन की कमी के कारण अपवाद है या नहीं? – Arci

+0

मैंने पहले ही इसका उत्तर दिया है। 'इंटरनेट कनेक्शन की कमी' की स्थिति में एक अच्छी तरह से परिभाषित अर्थ नहीं है, लेकिन जब मैंने ऐसा कहा तो मैंने सूचीबद्ध तीन अपवादों में से एक को हल किया। – EJP

2

इंटरनेट कनेक्टिविटी की जाँच के लिए ....

boolean b_IsConnect = isNetworkAvailable(); 
private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager 
       .getActiveNetworkInfo(); 
     return activeNetworkInfo != null; 
    } 
4

इंटरनेट कनेक्शन की जांच कर रहा, बस इस नमूना समारोह की कोशिश ....

public static boolean CheckInternet(Context context) 
{ 
    ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    return wifi.isConnected() || mobile.isConnected(); 
} 

मैं इस मदद आशा ....

+0

'mobile.is कनेक्ट()' दो बार परीक्षण करने में कोई बात नहीं है, यह सब एक पंक्ति में कम किया जा सकता है: 'वापसी wifi.is कनेक्ट() || mobile.isConnected() '। – EJP

+0

धन्यवाद! मैं एक समान जांच विधि को लागू करने की भी योजना बना रहा हूं यदि अपवाद हटाया गया यह निर्धारित करने के लिए पर्याप्त नहीं होगा कि कोई इंटरनेट कनेक्शन नहीं है या नहीं। – Arci

+0

आपका स्वागत है। अगर आप मेरे उत्तर में मददगार हैं तो इसे वोट दें। – Uttam

1

इंटरनेट कनेक्शन की जाँच करने के लिए, इस समारोह का उपयोग करें।

public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) 
        { 
         return true; 
        } 
     } 
     return false; 
} 
संबंधित मुद्दे