登陆页面输入用户名和密码,登陆成功后跳转到主页面,失败时显示错误信息。传递参数时用BasicNameValuePair的List以httpPost.setEntity的方式来做,不能用HttpParams。
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();
}
}
});
;