HttpClient 로그 인 기능 구현

많은 앱 에서 사용자 가 등록 하고 로그 인 하 는 기능 이 없어 서 는 안 된다. 로그 인 기능 의 원 리 는 로 컬 데 이 터 를 서버 에 POST 하고 서버 가 데 이 터 를 받 은 후에 Json 으로 돌아 가 는 것 이다.클 라 이언 트 가 되 돌아 오 는 JSon 데 이 터 를 가 져 와 분석 합 니 다. 암호 화 된 식별 자가 있 습 니 다. 긍정 적 인 식별 자가 있 으 면 로그 인 할 수 있 고 실패 한 식별 자가 있 으 면 오류 정 보 를 알려 줍 니 다.먼저 로그 인 단 추 를 누 르 면 이벤트 가 추 가 됩 니 다. 단 추 를 누 르 면 로그 인 중인 대화 상 자 를 꺼 내 고 스 레 드 를 실행 합 니 다.
mDialog = new ProgressDialog(LoginActivity.this);
mDialog.setTitle("  ");
mDialog.setMessage("       ,   ...");
mDialog.show();
Thread loginThread = new Thread(new LoginThread());
loginThread.start(); 

그리고 urlstr 는 서버 주소 로 사용자 이름과 비밀 번 호 를 params 에 추가 합 니 다. "user", "pwd" 는 서버 와 app 사이 에 인식 되 는 식별 자 입 니 다. username 과 password 는 로 컬 에서 입력 한 사용자 이름과 비밀번호 입 니 다. 그리고 이 를 서버 에 보 내 고 200 과 같 으 면 서버 의 JSon 값 을 되 돌려 달라 고 요청 합 니 다.responseMsg 는 서버 가 클 라 이언 트 에 게 되 돌려 준 데이터 이 고 그 다음은 데이터 분석, 판단 이다.
private boolean loginServer(String username, String password) {
        boolean loginValidate = false;
        String urlStr = "http://10.0.0.1.26.80";
        HttpPost request = new HttpPost(urlStr);
        List params = new ArrayList();
        params.add(new BasicNameValuePair("user", username));
        params.add(new BasicNameValuePair("pwd", password));
        try {
            request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            HttpClient client = getHttpClient();
            HttpResponse response = client.execute(request);
            if (response.getStatusLine().getStatusCode() == 200) {
                loginValidate = true;
                responseMsg = EntityUtils.toString(response.getEntity());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return loginValidate;
    } 

그 다음 에 스 레 드 를 만 듭 니 다. 그 안에 JSon 에 대한 분석 입 니 다. json 의 값 을 얻 었 습 니 다. status 는 되 돌아 오 는 상태 값 입 니 다. 그 다음 에 판단 합 니 다. 사용자 이름 이나 사용자 비밀번호 가 비어 있 을 때 '사용자 이름 이나 비밀번호 가 비어 있 으 면 안 됩 니 다' 라 고 알려 줍 니 다. status 의 값 이 true 이면 메 인 스 레 드, 즉 메 인 인터페이스 로 이동 하여 로그 인 성공 을 알 립 니 다.다른 경우 오류 정 보 를 알려 줍 니 다. 알림 내용 은 error 의 값 이 고 그 값 은 서버 에서 얻 을 수 있 습 니 다.
class LoginThread implements Runnable {
        @Override
        public void run() {
            String username = edittext1.getText().toString();
            String password = edittext2.getText().toString();
            boolean loginValidate = loginServer(username, password);
            Message msg = handler.obtainMessage();
            if (loginValidate) {
                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(responseMsg);
                    status = jsonObject.getString("status");
                    error = jsonObject.getString("error");
                    token = jsonObject.getString("token");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                if (status.equals("true")) {
                    msg.what = 0;
                    handler.sendMessage(msg);
                } else if (username.equals("") || password.equals("")) {
                    msg.what = 1;
                    handler.sendMessage(msg);
                } else {
                    msg.what = 2;
                    handler.sendMessage(msg);
                }
            }
        }
    } 

Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 0:
                mDialog.cancel();
                Toast.makeText(getApplicationContext(), "    !",
                        Toast.LENGTH_SHORT).show();
                Intent intent = new Intent();
                intent.setClass(LoginActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
                break;
            case 1:
                mDialog.cancel();
                Toast.makeText(getApplicationContext(), "           ",
                        Toast.LENGTH_SHORT).show();
                break;
            case 2:
                mDialog.cancel();
                Toast.makeText(getApplicationContext(), error,
                        Toast.LENGTH_SHORT).show();
                break;
            }

        }
    }; 

좋은 웹페이지 즐겨찾기