2015-06-25 1 views
-1

Я звоню в URL для получения данных и вставки в мою базу данных. Я не предоставил интернет-проверку. Если я открываю приложение без подключения к Интернету, он работает плавниками, появляется всплывающее окно. Но если я подключусь к URL-адресу, когда у меня есть интернет, а интернет идет в середине процесса, мое приложение вылетает, как его исправить?Приложение для Android Сбой при отсутствии интернета при подключении к серверу

Мой код:

public class DoPOSTPen extends AsyncTask<String, Void, Boolean> implements OnCancelListener { 
    @SuppressWarnings("deprecation") 
    @Override 
    protected Boolean doInBackground(String... arg0) { 

     try { 

      HttpClient client = new DefaultHttpClient(); 
      HttpGet request = new HttpGet("http://testapi.pharmeazy.in/api/MediEazy/GetAllInvoices"); 

      request.addHeader("Authorization", " basic NDlyaWNva2pvaWQwM2ptZGlraWRES09qZGZpamRmNzY0dDA4NWp6MzcyOHdzMkpJS1M4MTA0c2NvcTJ1OTRkazphd0VEMzI3MkA4WWFzZEU3MjI3IUBeIypVSFMq"); 
      request.setHeader(HTTP.CONTENT_TYPE, "application/json"); 
      System.out.println("PRIINTING"); 

      HttpResponse response = null; 
      try { 
       response = client.execute(request); 

       Log.d("Response of GET request", response.toString()); 
      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      InputStream inputStream = response.getEntity().getContent(); 
      String result = Utils.convertInputStreamToString(inputStream); 


      System.out.println("server response is :" + result + "\n" + inputStream); 


      try { 

       ja=new JSONArray(result); 




      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 

      } 
     } 
     catch (Exception e) { 
      Log.e("ClientServerDemo", "Error:", e); 

      toastText2 = "Connection Error !"; 
     } 

     return true; 
    } 

    protected void onPreExecute() { 

     //display the progress dialog 

     mProgressHUD2 = ProgressHUD.show(Med.this,"Getting Rejected Orders", true,false,this); 

    } 

    @Override 
    protected void onPostExecute(Boolean valid) { 
     mProgressHUD2.dismiss(); 
     // if server response is successful 

     for(int i=0;i<ja.length();i++){ 

      try { 
      jo=ja.getJSONObject(i); 


      db.insertLabel(jo.get("Id").toString(), jo.get("CustomerId").toString(), jo.get("PharmacyId").toString(), 
        jo.get("DeliveryAddress").toString(), jo.get("DeliveryName").toString(), 
         jo.get("OrderStatus").toString(),jo.get("PrescriptionAttached").toString(),jo.get("Discount").toString()); 




      } 


     catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     } 
     new DoPOST3().execute(); 

    } 

Пожалуйста, помогите

+0

еще один NPE .. .. просто изучайте программирование ... LINT d idnt упоминает, что в этой строке 'InputStream inputStream = response.getEntity(). getContent()' 'response' может быть' null'? http://ideone.com/oGEZ4x – Selvin

+0

HEHE Я снимаю ненужный код и указываю, где ваша проблема в примере ... если вы все еще не хотите, просто сдадитесь программированием и попробуйте свою удачу с футболом. также вы должны научиться спрашивать ... этот вопрос не по теме: * Вопросы, требующие помощи для отладки («почему этот код не работает?») должны включать в себя желаемое поведение **, конкретную проблему или ошибку ** и кратчайший код, необходимый для его воспроизведения в самом вопросе * – Selvin

+0

также удалите свою учетную запись малыша и прекратите делать серийные выдержки ... в других случаях вам будет запрещено несколько дней ... – Selvin

ответ

0

почему вы не идете для httpurlconection

@Override 
     protected String doInBackground(String... params) { 


      String finalResult = null; 
      URL url = null; 
      HttpsURLConnection urlConnection = null; 
      try {   



       url=new URL(URL); 
       urlConnection = (HttpsURLConnection) url.openConnection(); 
       urlConnection.setDoOutput(true); 
       urlConnection.setDoInput(true); 

       urlConnection.setRequestMethod("POST"); 
       urlConnection.setUseCaches(false); 
       urlConnection.setConnectTimeout(5000); 
       urlConnection.setReadTimeout(5000); 
       urlConnection.setRequestProperty("Content-Type","application/json"); 
       urlConnection.connect(); 


       OutputStreamWriter out = new OutputStreamWriter(urlConnection.getOutputStream()); 
       out.write(jsonObjSend.toString()); 
       out.close(); 
       starttime = System.currentTimeMillis(); 

       try { 
        mResponseCode = urlConnection.getResponseCode(); 
        totaltime = System.currentTimeMillis() - starttime; 
        Log.e("HTTP POST Response Code:", "" 
          + mResponseCode); 
       } catch (SSLPeerUnverifiedException e) { 

        Log.e("Exception", Log.getStackTraceString(e)); 
       } catch (IOException e) { 

        Log.e("Exception", Log.getStackTraceString(e)); 
        Log.e("HTTP POST Response Code(2):", "" 
          + mResponseCode); 
       } 
} 

проверки перед вызовом AsyncTask

if(Util.haveNetworkConnection(this)) 
     { 
    HttpPostData req=new HttpPostData(URL, createJsonObject(),this) ; 
    req.execute(); 

       }