android-async-http開源項目GET方式 POST方式實現登陸
我們通過最常見的登陸案例進行介紹android-async-http開源項目中有關類的使用.希望對你學習android-async-http開源項目有所協助.
1.在應用中引用android-async-http開源項目
方法一:找到下載檔案的源碼librarysrcmainjava的com包黏貼到項目中的src目錄下
方法二:把android-async-http-master eleases下面最新的jar包放到應用到libs下
2.LoginActivity的代碼(代碼中詳細加了注釋,請仔細閱讀)
[java]
- package com.example.lesson03;
-
- import org.apache.http.Header;
-
- import com.loopj.android.http.AsyncHttpClient;
- import com.loopj.android.http.AsyncHttpResponseHandler;
- import com.loopj.android.http.RequestParams;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.text.TextUtils;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.TextView;
- import android.widget.Toast;
-
- public class LoginActivity extends Activity {
-
- // 聲明控制項
- private EditText et_name, et_pass;
- private TextView tv_result;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- // 擷取控制項對象
- et_name = (EditText) findViewById(R.id.et_name);
- et_pass = (EditText) findViewById(R.id.et_pass);
- tv_result = (TextView) findViewById(R.id.tv_result);
- }
-
- /**
- * 點擊按鈕控制項觸發的事件
- * @param v
- */
- public void login(View v) {
- //擷取控制項的id
- int id = v.getId();
- //根據id判斷進行相應的處理
- switch (id) {
- case R.id.btn_login:
- // 擷取控制項的常值內容
- String userName = et_name.getText().toString();// 使用者名稱
- String userPass = et_pass.getText().toString();// 使用者密碼
- //判斷使用者名稱和密碼是否為空白
- if (TextUtils.isEmpty(userName.trim())
- || TextUtils.isEmpty(userPass.trim())) {
- Toast.makeText(this, 使用者名稱或者密碼不可為空, Toast.LENGTH_LONG).show();
- } else {
- // 發送請求給伺服器
- //調用:loginByAsyncHttpClientPost(userName, userPass);
- loginByAsyncHttpClientGet(userName, userPass);
- }
- break;
- }
- }
-
- /**
- * 採用AsyncHttpClient的Post方式進行實現
- * @param userName
- * @param userPass
- */
- public void loginByAsyncHttpClientPost(String userName, String userPass) {
- AsyncHttpClient client = new AsyncHttpClient(); // 建立非同步請求的用戶端對象
- String url = http://172.16.237.200:8080/video/login.do; // 定義請求的地址
- // 建立請求參數的封裝的對象
- RequestParams params = new RequestParams();
- params.put(username, userName); // 佈建要求的參數名和參數值
- params.put(userpass, userPass);// 佈建要求的參數名和參數
- // 執行post方法
- client.post(url, params, new AsyncHttpResponseHandler() {
- /**
- * 成功處理的方法
- * statusCode:響應的狀態代碼; headers:相應的頭資訊 比如 響應的時間,響應的伺服器 ;
- * responseBody:響應內容的位元組
- */
- @Override
- public void onSuccess(int statusCode, Header[] headers,
- byte[] responseBody) {
- if (statusCode == 200) {
- tv_result.setText(new String(responseBody)); // 設定顯示的文本
- }
- }
-
- /**
- * 失敗處理的方法
- * error:響應失敗的錯誤資訊封裝到這個異常對象中
- */
- @Override
- public void onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- error.printStackTrace();// 把錯誤資訊列印出軌跡來
- }
- });
- }
-
- /**
- * 採用AsyncHttpClient的Get方式進行實現
- * @param userName
- * @param userPass
- */
- public void loginByAsyncHttpClientGet(String userName, String userPass) {
- // 建立非同步用戶端對象
- AsyncHttpClient client = new AsyncHttpClient();
- // 請求的地址
- String url = http://172.16.237.200:8080/video/login.do;
- // 建立請求參數的封裝的對象
- RequestParams params = new RequestParams();
- params.put(username, userName); // 佈建要求的參數名和參數值
- params.put(userpass, userPass);// 佈建要求的參數名和參數
-
- // 發送get請求的時候 url地址 相應參數,匿名回調對象
- client.get(url, params,new AsyncHttpResponseHandler() {
- @Override
- public void onSuccess(int statusCode, Header[] headers,
- byte[] responseBody) {
- // 成功處理的方法
- System.out
- .println(statusCode------------------- + statusCode);
- // 遍曆頭資訊
- for (int i = 0; i < headers.length; i++) {
- Header header = headers[i];
- System.out.println(header------------Name:
- + header.getName() + ,--Value:
- + header.getValue());
- }
- // 設定控制項內容
- tv_result.setText(new String(responseBody));
- }
-
- @Override
- public void onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- // 失敗處理的方法
- error.printStackTrace();
- }
- });
- }
-
- }
3.程式運行結果如: