2013-11-23 2 views
0

Я разрабатываю приложение, которое подключается к PHP и получает данные из базы данных.jParser.makeHttpRequest не поймает ошибку, когда я не подключен к интернету

Моя проблема в том, что я получаю данные по jParser.makeHttpRequest с подключением к Интернету и закрываю свой интернет и снова делаю это jParser.makeHttpRequest возвращает последнее, что он вернул. Это не даст никакой интернет-ошибке или что-то вроде этого. Как я могу это исправить?

jParser = new JSONParser(); 
JSONObject json = jParser.makeHttpRequest(url_get_login_infos, "GET", _params); 
int success = json.getInt(TAG_SUCCESS); 
String message = json.getString(TAG_MESSAGE); 

ответ

0

Объект уничтожается сборщиком мусора. Ваш объект все еще существует, когда вы вызываете данные во второй раз. Сбросьте свой синтаксический анализатор с нулевым значением, например, перед тем, как вы вызовете данные и проверите результат. Разместите код для больше ответов

здесь некоторые из кода с Json которым работает отлично

 protected String doInBackground(String... args) { 

     //affectation des valeurs pour passage à PHP 
     String email = getEmail(); 

     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("email", email)); 

     // getting JSON Object 
     String url = SingletonParametres.getUrlConnexion() + "get_selectuser.php"; 
     JSONObject json = null; 
     try { 
      json = jsonParser.makeHttpRequest(url, "GET", params); 
     } catch (HttpException e) { 
      e.printStackTrace(); 
     } 
     // check for success tag 
     try { 
      String Variablepourvoir = json.getString(TAG_SUCCESS); 
      success = json.getInt(TAG_SUCCESS); 
      switch (success) { 
       case 1: {    /* user retrouvé avec succes */ 
        // successfully select user 
        setCodeRetour(1); 
        setMsgRetour("user existe MyApplication ok"); 
        // sauvegarde des données User dans la classApplication 
        // successfully received product details 
        JSONArray JsonUserArray = json.getJSONArray("user"); // JSON Array 

        // get first user object from JSON Array 
        JSONObject JsonUserObject = JsonUserArray.getJSONObject(0); 

        // user with this email found 
        //save data in MyApplication 

        MyApplication.setIdUser(JsonUserObject.getInt("iduser")); 
        MyApplication.setEmail(JsonUserObject.getString("email")); 
        MyApplication.setPseudo(JsonUserObject.getString("pseudo")); 
        if (JsonUserObject.getInt("autorisation_upload") ==1) { 
         MyApplication.setAutorisationUpload(true); 
        } else { 
         MyApplication.setAutorisationUpload(false); 
        } 

         break; 
       } 
       case 0: {    /* oops ! ... un probleme est survenu */ 
        setCodeRetour(ECHEC); 
        setMsgRetour("user non trouvé MyApplication echec"); 
        break; 

       } 
      } 



     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 
+0

Я поставил jParser = новый JSONParser(); как раз перед jParser.makeHttpRequest, но то же самое произошло – halil12

+0

Значение ведьмы в вашем TAG_SUCCESS? Почему бы вам не проверить это? когда вы сказали «возвращает последнее, что он вернул» или «то же самое случилось», что вы имели в виду? –

+0

, когда я пытаюсь поймать HttpException AndroidStudio говорит, что исключение 'org.apache.http.HttpException' никогда не бросается в соответствующий блок try. – halil12

0

попробовать это, у вас есть, что добавить это условие:

if(json != null){ 
    //excecute code 

    }else{ 
     getActivity().runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      Toast.makeText(getActivity(), "conection error", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
} 

Этот способ написания Тост , если вы работаете во Фрагменте.

в вашем коде, сделать это:

String url = SingletonParametres.getUrlConnexion() + "get_selectuser.php"; 
JSONObject json = null; 
json = jsonParser.makeHttpRequest(url, "GET", params); 
if(json != null) { 

    try { 
      String Variablepourvoir = json.getString(TAG_SUCCESS); 
      success = json.getInt(TAG_SUCCESS); 
      switch (success) { 
       case 1: { 

      ..... 
      ..... 
}else{ 
    getActivity().runOnUiThread(new Runnable() { 
    @Override 
    public void run() { 
     Toast.makeText(getActivity(), "conection error", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 
Смежные вопросы