2016-08-24 66 views
-2

嗨,大家好,你能帮助我为什么用户和密码总是无效,我敢肯定这个URL很好的调用用户的数据,但我不知道为什么会发生这种情况?之前,应用程序可以登录用户名/密码无效登录Android应用程序

这里是我的LoginActivity:

import java.io.IOException; 

import org.apache.http.client.ClientProtocolException; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.text.method.LinkMovementMethod; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.inarts.mobile.merch.md.info.AppInfo; 
import com.inarts.mobile.merch.md.info.UserInfo; 
import com.inarts.rest.RequestMethod; 
import com.inarts.rest.RestClient; 

public class LoginActivity extends Activity { 

    public String targetUrl = ""; 
    public String userName = ""; 
    public String userUsername = ""; 
    public String userPassword = ""; 
    public boolean userSaveCB = false; 
    public static Context ctx; 
    public static final String PREFS_NAME = "MyPrefsFile"; 

    /** 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ctx = this.getApplicationContext(); 
     targetUrl = Config.getEndPointUrl() + "/login.json"; 

     TextView tvcopyright = (TextView) findViewById(R.id.main_copyright); 
     tvcopyright.setMovementMethod(LinkMovementMethod.getInstance()); 

     EditText tvUsername = (EditText) findViewById(R.id.main_user_txt); 
     EditText tvPassword = (EditText) findViewById(R.id.main_pass_txt); 
     CheckBox cbSavePassword = (CheckBox) findViewById(R.id.main_save_cb); 

     if (isSavePassword()) { 
      tvUsername.setText(getSavedUsername().toString()); 
      tvPassword.setText(getSavedPassword().toString()); 
      cbSavePassword.setChecked(true); 
     } else { 
      cbSavePassword.setChecked(false); 
     } 

     if (getLoginState()) { 
      Log.i("ncdebug", "I am logged in"); 
      goToMainActivity(); 
     } else { 

     } 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     menu.add(0, 1, 0, "Keluar").setIcon(R.drawable.ic_menu_exit); 

     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
      case 1: 
       finish(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    @Override 
    public void onBackPressed() { 

     return; 
    } 

    public void click_login(View view) { 
     EditText user_txt = (EditText) findViewById(R.id.main_user_txt); 
     EditText pass_txt = (EditText) findViewById(R.id.main_pass_txt); 

     if  ( user_txt.getText().toString().equals(AppInfo.adminName) 
       && pass_txt.getText().toString().equals(AppInfo.adminPass) 
       ) 
     { 
      Intent intent = new Intent(ctx, StoreAddGeoActivity.class); 
      startActivity(intent); 
      finish(); 
     } else { 
      new AuthenticateTask().execute(targetUrl, userUsername, userPassword); 
     } 

    } 

    public void goToMainActivity() { 
     Intent intent = new Intent(this.getApplicationContext(), 
       MainActivity.class); 
     this.startActivity(intent); 
     finish(); 
    } 

    public void saveLoginState() { 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString("user_name", userName); 
     editor.putString("user_username", userUsername); 
     editor.putString("user_password", userPassword); 
     editor.putBoolean("loginState", true); 

     CheckBox cbSavePassword = (CheckBox) findViewById(R.id.main_save_cb); 
     if (cbSavePassword.isChecked()) { 
      editor.putBoolean("isSavePassword", true); 
     } else { 
      editor.putBoolean("isSavePassword", false); 
     } 

     UserInfo.username = userUsername; 
     UserInfo.name = userName; 
     UserInfo.loginstatus = true; 

     editor.commit(); 
    } 

    public boolean isSavePassword() { 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     boolean stat = settings.getBoolean("isSavePassword", false); 

     return stat; 
    } 

    public String getSavedUsername() { 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

     return settings.getString("user_username", ""); 
    } 

    public String getSavedPassword() { 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

     return settings.getString("user_password", ""); 
    } 

    public boolean getLoginState() { 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 

     UserInfo.username = settings.getString("user_username", ""); 
     UserInfo.name = settings.getString("user_name", ""); 

     boolean stat = settings.getBoolean("loginState", false); 
     UserInfo.loginstatus = stat; 

     return stat; 
    } 

    private class AuthenticateTask extends AsyncTask<String, String, String> { 
     ProgressDialog dialog; 

     @Override 
     protected void onPreExecute() { 
      dialog = ProgressDialog.show(LoginActivity.this, "", "Loading...", 
        true); 
     } 


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

      RestClient client = new RestClient(params[0]); 

//   EditText user_txt = (EditText) findViewById(R.id.main_user_txt); 
//   EditText pass_txt = (EditText) findViewById(R.id.main_pass_txt); 
//   userUsername = user_txt.getText().toString(); 
//   userPassword = pass_txt.getText().toString(); 
//   client.AddParam("username", user_txt.getText().toString()); 
//   client.AddParam("password", pass_txt.getText().toString()); 

      client.AddParam("username", params[1]); 
      client.AddParam("password", params[2]); 

      try { 
       client.Execute(RequestMethod.GET); 
       return client.getResponse(); 
      } catch (ClientProtocolException e) { 
       // e.printStackTrace(); 
       Toast.makeText(LoginActivity.ctx, e.getMessage(), 
         Toast.LENGTH_SHORT).show(); 
      } catch (IOException e) { 
       // e.printStackTrace(); 
       Toast.makeText(LoginActivity.ctx, e.getMessage(), 
         Toast.LENGTH_SHORT).show(); 
      } catch (Exception e) { 
       // e.printStackTrace(); 
       Toast.makeText(LoginActivity.ctx, e.getMessage(), 
         Toast.LENGTH_SHORT).show(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(String Result) { 
      dialog.dismiss(); 
      if (Result != null) { 
       parseJson(Result); 
      } else { 
       Toast.makeText(LoginActivity.ctx, 
         "Login Failed, Connection Error", Toast.LENGTH_SHORT) 
         .show(); 
      } 
      System.out.println("Ini dia"); 
     } 

     public void parseJson(String s) { 
      try { 
       JSONObject jobj = new JSONObject(s); 
       String stat = jobj.getString("stat"); 

       if (stat.equals("failed")) { 
        String msg = jobj.getString("msg"); 
        Toast.makeText(LoginActivity.ctx, msg, Toast.LENGTH_SHORT) 
          .show(); 
       } else { 
        userName = jobj.getString("name"); 

        saveLoginState(); 

        goToMainActivity(); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
       Toast.makeText(LoginActivity.ctx, e.getMessage(), 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 

    } 

} 

我Config.Java这里的URL

public class Config { 
    public static String getEndPointUrl() { 
     String endpointUrl = "http://mobilemerch.in2digital.net/rest"; 

     return endpointUrl; 
    } 

如果您有什么需要解决的问题只问之下,谢谢:)

回答

0

问题出在您的click_login()方法。在那里你用空白数据初始化你的n/w调用Async。你可以做一些像下面的东西来解决它:

public void click_login(View view) { 
     EditText user_txt = (EditText) findViewById(R.id.main_user_txt); 
     EditText pass_txt = (EditText) findViewById(R.id.main_pass_txt); 

     // Inititialising the string vars here 
     userUsername = user_txt.getText().toString(); 
     userPassword = pass_txt.getText().toString(); 

     if (userUsername.equals(AppInfo.adminName) && userPassword.equals(AppInfo.adminPass)) { 
      Intent intent = new Intent(ctx, StoreAddGeoActivity.class); 
      startActivity(intent); 
      finish(); 
     } else { 
      new AuthenticateTask().execute(targetUrl, userUsername, userPassword); 
     } 

    } 
+0

谢谢老兄,对不起,我没有注意到它:) –

相关问题