2012-04-13 2 views
0

ich erstelle Login-Seite. Diese Login-Seite wird von der Server-Datenbank validiert. Wenn das Netz verfügbar ist, bedeutet das, dass ein Klick auf die Schaltfläche "Anmelden" bedeutet, dass es funktioniert. wenn i net deaktivieren klicken Sie dann auf Login-Button bedeutet es die Anwendung zeigt Fehler wurde nicht reagiert .. wie man diese Fehler zu vermeiden, meinen Code mitwie zu vermeiden, dass die anwendung nicht reagiert, während net in android getrennt ist

 i try this code 
      login.setOnClickListener(new View.OnClickListener() 
    { 

     public void onClick(View v) 
     { 
      name = username.getText().toString(); 
      pass = password.getText().toString(); 
      String Str_check2 = app_preferences.getString("checked", "no"); 
      if(Str_check2.equals("yes")) 
      { 
       SharedPreferences.Editor editor = app_preferences.edit(); 
       editor.putString("username", name); 
       editor.putString("password", pass); 
       editor.commit(); 
      } 
      if(name.equals("") || pass.equals("")) 
      { 
       Toast.makeText(Main.this, "Please Enter Username and Password", Toast.LENGTH_LONG).show(); 
      } 

      else 

      try { 
       httpclient = new DefaultHttpClient(); 
       httppost = new HttpPost("url/login.php"); 
       // Add your data 
       nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("UserEmail", name.trim())); 
       nameValuePairs.add(new BasicNameValuePair("Password", pass.trim())); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

       // Execute HTTP Post Request 
       response = httpclient.execute(httppost); 
       inputStream = response.getEntity().getContent(); 

       data = new byte[256]; 

       buffer = new StringBuffer(); 
       int len = 0; 
       while (-1 != (len = inputStream.read(data))) 
       { 
        buffer.append(new String(data, 0, len)); 
       } 

       inputStream.close(); 
      } 

      catch (IOException e) { 
       System.out.println(e); 

       //alertDialog.cancel(); 

      } 
      if(buffer.charAt(0)=='Y') 
      { 

       Intent intent=new Intent(getApplicationContext(),another.class); 
       startActivity(intent); 
      } 
      else 
      { 
       System.out.println("Invalid username and password") 
      }   

     } 
    }); 

Antwort

0

fügen Sie ein Null-Check hier ..

response = httpclient.execute(httppost); 

    if(response != null){ 
    inputStream = response.getEntity().getContent(); 

        data = new byte[256]; 

denn wenn Serverkonnektivität fehlschlägt execute() kehrt null und Sie müssen sehen, und stellen Sie sicher, es ist nicht null .. und wie Naresh sagte nicht in MainThtread Server-Kommunikation tun .. siehe AsyncTasks, die als nützlich erweisen wird ..

+0

wo kann ich diese Zeile geschrieben haben, wenn (Antwort! = Null) { – Vinoth

+0

@Vinoth .. siehe meine Bearbeitungen .. – ngesh

+0

ich benutze ur bearbeiten Code aber der gleiche Fehler kommt .. was kann ich tun bitte sagen Sie mir – Vinoth

1

das erste, was, sollte man nicht Mach es dir Dein Netzwerk-Task im Haupt-Thread, der anscheinend in OnClick funktioniert.

Um Verbindungsabbrüche zu vermeiden, müssen Sie das Verbindungstimeout festlegen. für die einfache Nutzung von HTTP-Operationen i zusammen, um eine HTTP-Bibliothek in Github gesetzt haben, können Sie entweder den Code für Ihre Probe Referenz verwenden oder als Bibliothek verwenden

https://github.com/nareshsvs/android-libraries

0

mit Naresh Vereinbarte nicht Haupt-Thread verwenden für jede deiner Aufgaben Verwenden Sie Service oder AsyncTask, um Ihre lang laufenden Netzwerkaufgaben auszuführen.

+0

Wie kann ich mein Problem lösen Bitte sagen Sie mir – Vinoth

+0

Hier ist ein Beispiel ... http://stackoverflow.com/questions/2205128/how-to-create-http-connection-using-asynctask-class –

Verwandte Themen