2016-03-21 20 views
-3

Ne yazık ki android uygulaması durduruldu. Http Postmaalesef android uygulaması durduruldu. Http Post, sunucuya çağrı yapmaya çalışırken

HttpClient cli = new DefaultHttpClient(); 
      //HttpPost post = new HttpPost("http://" + sp.getString("ip", "localhost") + "/attendance/cliLogin.php"); 

      HttpPost post = new HttpPost("localhost/attendance/"); 

      // seting post data 
      List<NameValuePair> loginData = new ArrayList<NameValuePair>(2); 
      loginData.add(new BasicNameValuePair("uname", uname)); 
      loginData.add(new BasicNameValuePair("pass", pass)); 
      post.setEntity(new UrlEncodedFormEntity(loginData)); 

      // executing login 
      HttpResponse res = cli.execute(post); 
         HttpEntity resent = res.getEntity(); 

          String result = EntityUtils.toString(resent); 


      // reading response 

      if(result.equals("NoParams")) 
       Commons.showToast("Something went wrong", true); 
      else if(result.equals("Login")) 
      { 
       navi = new Intent(this, HomeActivity.class); 
       startActivity(navi); 
      } 
      else 
       Commons.showToast(result, true); 
     } 
     catch (HttpHostConnectException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      Commons.showToast("Can't reach server, check the Hostname", true); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
    else 
     Commons.showToast("Username/Password can't be empty", true); 
} 
} 
+0

http://stackoverflow.com/questions/23353173/untally-myapp-has-stopped-how-can-i-solve-this –

+0

Webservice'i ana iş parçacığına mı çağırıyorsunuz? @Pramod Patil – RushDroid

+0

lütfen yığın izleyiniz ekleyin – Shahar

cevap

0

hatayı görmek için logcat paylaşır mısınız lütfen yardım sonrası etkinliğine sunucuyu aramaya çalışırken? AsyncTask genişleten bir sınıf oluşturun: Ben senin ana iş parçacığı php script (yani etkinlik iplik) diyoruz ve bu durumda size NetworkOnMainThreadException

olabileceğini düşünüyorum. Yöntemlerini geçersiz kılın. Bu sınıfın yaratıcısında değişkenleri iletin ve bunları sınıfınızın alanlarına (değişkenlerine) atayın.

Yayınınızı doynBackground yönteminin içinde bir AsyncTask içinde yapın Ve AsyncTask yürütmesini çağırın. Bunun gibi: Yine

MyTask new MyTask(uname, pass).execute(); 

:

public class MyTask extends AsyncTask<String,String,String>{ 
    private short errorType = -1; 
    private String result; 
    private String uname; 
    private String pass; 
    public MyTask(String uname, String pass){ 
     this.uname = uname; 
     this.pass = pass; 
} 

@Override 
protected String onPostExecute(Void result) { 
// TODO Auto-generated method stub 
super.onPostExecute(result); 
if (errorType == 1){ 
    Commons.showToast("Can't reach server, check the Hostname", true); 
} 
if(result.equals("NoParams")) {  
    Commons.showToast("Something went wrong", true); } 
else if(result.equals("Login")) { 
     Intent navi = new Intent(this, HomeActivity.class);   startActivity(navi); 
    } 
else { 
     Commons.showToast(result, true); 
    } 
} 
@Override 
protected void onPreExecute() { 
// TODO Auto-generated method stub 
super.onPreExecute(); 
} 

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


    HttpClient cli = new DefaultHttpClient(); 


     HttpPost post = new HttpPost("localhost/attendance/"); 
    List<NameValuePair> loginData = new  ArrayList<NameValuePair>(2);  
loginData.add(new  BasicNameValuePair("uname", uname)); 
loginData.add(new BasicNameValuePair("pass", pass)); 
post.setEntity(new UrlEncodedFormEntity(loginData)); 
// executing login 
HttpResponse res = cli.execute(post); 
    HttpEntity resent = res.getEntity(); 
return result = EntityUtils.toString(resent); 

    } 
catch (HttpHostConnectException e) 
    { 
    // TODO Auto-generated catch block   
    e.printStackTrace();  
     errorType = 1; 
     return null; 
    } 
catch (ParseException e) { 
// TODO Auto-generated catch block   e.printStackTrace(); 
errorType = 2; 
return null; 
} 
catch (IOException e) { 
// TODO Auto-generated catch block  e.printStackTrace(); 
errorType = 3; 
    return null; 
} 
    catch(Exception e){ 
     errorType = 4; 
     return null; 
    } 
} 
} 

Ve faaliyeti içine

böyle çağrı yapmak. Tüm bunlar yalnızca

NetworkOnMainThreadException 

için geçerlidir. Lütfen daha fazla yardım için logcat'inizi paylaşın.