我們通過最常見的登陸案例進行介紹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.程序運行結果如下圖: