마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

로그인 성공 실패여부....

0 추천
제목그대로  로그인 화면을 구현하고있습니다... Restful 과  파싱은 로그로 제대로 확인을 하였는데...

문제는 실패할때와 성공할때의  동작이 제대로 작동하지 않습니다 ㅠ ㅠ.....  코드는 이렇습니다.. URL은 대강 가려놨습니다.

도와주십시오 T.T
 @Click({R.id.join, R.id.login, R.id.forget})
 void click(View v){
  switch (v.getId()) {
  case R.id.join:
   startActivity(new Intent(getApplicationContext(), JoinFormActivity_.class));
   break;
  case R.id.login:
   new AttemptLogin().execute();
           
   break;
  case R.id.forget:
   startActivity(new Intent(getApplicationContext(), ForgetUserActivity_.class));
 
   break;

  }
  
 }

 class AttemptLogin extends AsyncTask<String, String, String> {

   /**
      * Before starting background thread Show Progress Dialog
      * */
  boolean failure = false;
  
     @Override
     protected void onPreExecute() {
         super.onPreExecute();
         pDialog = new ProgressDialog(MainActivity.this);
         pDialog.setMessage("Attempting login...");
         pDialog.setIndeterminate(false);
         pDialog.setCancelable(true);
         pDialog.show();
   long delayInMillis = 4000;
      Timer timer = new Timer();
      timer.schedule(new TimerTask() {
     }
  
 @Override
  protected String doInBackground(String... args) {
   // TODO Auto-generated method stub
    // Check for success tag
         int success;
          account = new Account();
          String userId = id.getText().toString();
   String userPw = pw.getText().toString();
      
   jin.login(userId, userPw);  
   
         try {
             // Building Parameters
             List<NameValuePair> params = new ArrayList<NameValuePair>();
             params.add(new BasicNameValuePair("id", userId));
             params.add(new BasicNameValuePair("pw", userPw));

             Log.d("request!", "starting");
             // getting product details by making HTTP request
             JSONObject json = jsonParser.makeHttpRequest(
                    LOGIN_URL, "POST", params);

             // check your log for json response
             Log.d("Login attempt", json.toString());

             // json success tag
             success = json.getInt(TAG_SUCCESS);
             if (success == 1) {
              Log.d("Login Successful!", json.toString());
              Intent i = new Intent(MainActivity.this, ControlActivity_.class);
              finish();
                // 데이터를저장합니다. (ID, Password)
                SharedPreferences prefs = getSharedPreferences("PrefName", MODE_PRIVATE);
                SharedPreferences.Editor editor = prefs.edit();
                editor.putString("userId", userId);
                editor.putString("userPw", userPw);
                editor.commit();

     startActivity(i);
              return json.getString(TAG_MESSAGE);
             }else{
              Log.d("Login Failure!", json.getString(TAG_MESSAGE));
              return json.getString(TAG_MESSAGE);
              
             }
         } catch (JSONException e) {
             e.printStackTrace();
         }

         return null;
   
  }
  /**
      * After completing background task Dismiss the progress dialog
      * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog once product deleted
        pDialog.dismiss();
        if (file_url != null){
         Toast.makeText(MainActivity.this, file_url, Toast.LENGTH_LONG).show();
        }
     }
 }
}
sn1883 (860 포인트) 님이 2014년 8월 25일 질문

2개의 답변

+1 추천
이걸로는 알 수 없죠

서버에서 넘어오는 result code 가 어떻게 넘어오나요?
aucd29 (218,390 포인트) 님이 2014년 8월 25일 답변
서버쪽에서는  
    @RequestMapping(value="login.do", method=RequestMethod.POST)
    public @ResponseBody Account loginAfter(@RequestParam Map<String, String> paramMap){
        //http://!~!@~@!~@!~@~!@t/login.do
        logger.info("["+paramMap.get("id") + "] 로그인 시도");
       
//        return null;
        return service.login(paramMap);
    }
    이런식이고  테스트하기위해서 아이디랑 비번 정보를 저장해두고 그 정보를 파싱하는거까지는 되었습니다. 문제는 매치가 안되는거같아요. 로그에서는 08-25 06:57:12.480: D/Login attempt(3654): {"id":"test","pw":"1234","serial":"321-432-23","key":"kkkeeeyyy","name":"이근민"}

이렇게오네요
저건 전달하는 쪽 같구요 응답 오는 값이 무언인지에 따라 코딩하셔야 하겠는데요
+1 추천
로그인 성공시 startActivity(..) 호출하는 부분을 onPostExecute(...)에서 호출하도록 구조를 변경해 보세요.
sfilelink (700 포인트) 님이 2014년 8월 25일 답변
...