登陸頁面輸入用戶名和密碼,登陸成功後跳轉到主頁面,失敗時顯示錯誤信息。傳遞參數時用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(); } } });