登陸頁面輸入用戶名和密碼,登陸成功後跳轉到主頁面,失敗時顯示錯誤信息。
傳遞參數時用BasicNameValuePair的List以httpPost.setEntity的方式來做,不能用HttpParams。
[java]
userName = (EditText) this.findViewById(R.id.editTextUserName);
password = (EditText) this.findViewById(R.id.editTextPassword);
errorMsg = (TextView) this.findViewById(R.id.textViewLoginMsg);
Button loginBtn = (Button) this.findViewById(R.id.btnLogin);
loginBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String result;
/* 發送部分 */
try {
HttpClient httpClient = new DefaultHttpClient();
String address = strUrl;
HttpPost httpPost = new HttpPost(address);
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("username", userName.getText().toString()));
params.add(new BasicNameValuePair("password", password.getText().toString()));
httpPost.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //將參數填入POST Entity中
HttpResponse httpResponse = httpClient.execute(httpPost);
/* 接收 */
if (httpResponse.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(httpResponse.getEntity());
/* json文本解析 */
JSONTokener jsonParser = new JSONTokener(result);
JSONObject jsonResult = (JSONObject) jsonParser.nextValue();
String status = jsonResult.getString("loginStatus");
String outMessage = jsonResult.getString("outMessage");
if(status.equals("true")){
Intent i = new Intent(LoginActivity.this, MainActivity.class);
i.putExtra("username", outMessage);
startActivityForResult(i, FIRST_REQUEST_CODE);
} else {
errorMsg.setVisibility(View.VISIBLE);
errorMsg.setText(outMessage);
}
} else {
errorMsg.setVisibility(View.VISIBLE);
errorMsg.setText("網絡連接問題。CODE:" + httpResponse.getStatusLine().getStatusCode());
}
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});