2012-03-28 6 views
0

следующие сбои кода, когда нет интеренет соединения:Сбой при нет подключения к интернету

public String gourl(String myurl,String params) { 

     URL url; 
     String rasp = ""; 

     try { 
      url = new URL(myurl + params); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(
        url.openStream())); 
      String line = ""; 
      while ((line = rd.readLine()) != null) { 
       rasp=rasp + line; 
      } 

      return rasp; 
     } catch (Exception e) { 
      Log.w("DHA", "EXCEPTIE URL"); 
     }  
     return null; 
} 

Как я могу предотвратить это?

+0

исключение? – Blackbelt

+0

когда я писал, вы приняли ответ тем временем. :) – Sameer

ответ

6

Проверьте соединение, прежде чем выполнить свой метод, что-то вроде этого:

public boolean isNetworkConnected() { 
     final ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo(); 
     return activeNetwork != null && activeNetwork.getState() == NetworkInfo.State.CONNECTED; 
    } 
+0

довольно хорошее решение спасибо. – opc0de

+0

Если я назову это дважды, приложение сбой – opc0de

+3

Я использую этот метод - никогда не было проблем. Проверить разрешения и . И покажите ломать, пожалуйста. –

1

Вы проверили, что значения myurl и params в методе?

Возможно, url.openStream() не работает и вызывает исключение NullPointerException.

Это также полезно, а сделать что-то вроде:

Log.w("DHA", "EXCEPTIE URL:" + e.toString()); 

Тогда вы увидите, что это исключение вместо того, чтобы гадать.

1

Проверьте, все подключения к Интернету

Для Wifi

public boolean isWifi(Context context){ 
    try{ 
    WifiManager wifi=(WifiManager) 

context.getSystemService(Context.WIFI_SERVICE); 
    if(wifi.isWifiEnabled()){ 
    return true; 
    }else{ 
     return false; 
    } 
    } 
    catch(Exception e){ 
     e.getMessage(); 
     return false; 
    } 
} 

для Сетевого

public boolean isOline(Context context){ 
    try{ 
     ConnectivityManager cm=(ConnectivityManager) 

    context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if(cm==null) 
      return false; 
     NetworkInfo info=cm.getActiveNetworkInfo(); 
     if(info==null) 
      return false; 
     return info.isConnectedOrConnecting(); 
    } 
    catch(Exception e){ 
     e.getMessage(); 
     return false; 
    } 
} 

Если какой-либо из них присутствует, то процесс WS еще показать alert.And Не забудьте сообщить об этом

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
Смежные вопросы