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

안드로이드 RestClient를 이용한 로그인 질문입니다......

0 추천
LoginActivity.class

login_id = (EditText) findViewById(R.id.login_id);
login_pw = (EditText) findViewById(R.id.login_pw);
login_btn = (Button) findViewById(R.id.login_btn);
register_btn = (Button) findViewById(R.id.register_btn);

login_btn.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub

    String _id = login_id.getText().toString();
    String _password = login_pw.getText().toString();
    new loginProc().execute(_id, _password);

   }
  });
class loginProc extends AsyncTask<String, Void, Boolean> {

  @Override
  protected Boolean doInBackground(String... params) {
   // TODO Auto-generated method stub
   RestClient rc = new RestClient();

   return rc.loginProcess(params[0], params[1]);
  }

  @Override
  protected void onPostExecute(Boolean result) {
   // TODO Auto-generated method stub
   super.onPostExecute(result);
   Log.d("result", "" + result);
   if (result == true) {
    Intent intent = new Intent(LoginActivity.this,
      MainActivity.class);
    // intent.putExtra("name", _id);
    startActivity(intent);
   } else {

   }
  }

 }

------------------------------------------------------------------------------------------------------------------------
RestClient.class

public boolean loginProcess(String id, String password) {
  HttpPost httpPost = new HttpPost(
    "http://ip주소:8080/Springboard/rest/loginProc");

  List<NameValuePair> nameValuePairs = new ArrayList<>();

  nameValuePairs.add(new BasicNameValuePair("id", id.toString() + ""));
  nameValuePairs.add(new BasicNameValuePair("password", password
    .toString() + ""));

  try {

   httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs,
     HTTP.UTF_8));
   // HttpResponse resp = httpClient.execute(httpPost);
   httpClient.execute(httpPost);
   return true;
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (ClientProtocolException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return false;

 }




안녕하세요 제가 지금 완전 초보라서요,,..

로그인을 만들려고 하는데 해본적이 없어서 이게 맞는지도 잘몰겠네용 ㅠㅠ

일단 질문을 하겠습니다.

 

AsyncTask의 onPostExecute에 result값이 서버랑 통신만 되면 true로 되는거같은데용(result값이) 이렇게가 아니라 어떨때는 true로 되게 해주고 어떨때는 false로 주고 이렇게  하려면 어떻게 해야하는지 ㅠㅠ 그리고 서버에서는 id랑password를 체크해서 true와 false를 반환하는데 Restclient에서 그 값을 어떻게 얻어와서 return 값으로 줄수있을지가 궁금합니다...질문이 많이 어지러우실거같은데요 정말 죄송하고 답변주시는분들 미리 감사드립니다.

아그리고 가장 중요한 질문은 이렇게 하는게 맞긴 맞는건가요?;;; 제가 지금 취업준비중이라 혼자 공부하고있어서 주위에 질문할 사람도 없고해서요 ㅠㅠ

졸려죽겠네요 (270 포인트) 님이 2014년 10월 29일 질문

1개의 답변

0 추천
 
채택된 답변
보통은 HTTP POST방식으로 많이날립니다.

주소와 파라미터에는 아이디,비밀번호,등등이 들어갈수있구요..

비밀번호는 보통은 암호화를 통해서 많이보냅니다. 아니면 서버에서 받은다음에 암호화로직을 통해서

서버쪽DB랑 비교한다던지요...

 

아무튼  클라이언트쪽에서는 처리해주어야하는부분딱히없습니다

GET이나 POST로 보낸다음에~

서버쪽 페이지에서 DB접속하고 거기서 아이디패스워드맞으면 성공했을때 ex) php로따지면..echo "RESP_001"; 값을 작성....

해당페이지엔 RESP_001달랑하나찍혀있겠죠..

그걸 InputStream으로 읽어서 결과값에 RESP_001일때 true처리 아니면 false처리 하면됩니다
whdrb19 (23,520 포인트) 님이 2014년 10월 29일 답변
졸려죽겠네요님이 2014년 11월 4일 채택됨
...