HttpClient 로그 인 기능 구현
7189 단어 [Android 실 용 방법]
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;
}
}
};