Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android-async-http開源項目GET方式 POST方式實現登陸

android-async-http開源項目GET方式 POST方式實現登陸

編輯:關於Android編程

我們通過最常見的登陸案例進行介紹android-async-http開源項目中有關類的使用.希望對你學習android-async-http開源項目有所幫助.

1.在應用中引用android-async-http開源項目

方法一:找到下載文件的源碼librarysrcmainjava的com包黏貼到項目中的src目錄下

\

方法二:把android-async-http-master eleases下面最新的jar包放到應用到libs下

\

2.LoginActivity的代碼(代碼中詳細加了注釋,請仔細閱讀)

 

[java]  
  1. package com.example.lesson03;
  2.  
  3. import org.apache.http.Header;
  4.  
  5. import com.loopj.android.http.AsyncHttpClient;
  6. import com.loopj.android.http.AsyncHttpResponseHandler;
  7. import com.loopj.android.http.RequestParams;
  8.  
  9. import android.app.Activity;
  10. import android.os.Bundle;
  11. import android.text.TextUtils;
  12. import android.view.View;
  13. import android.widget.EditText;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16.  
  17. public class LoginActivity extends Activity {
  18.  
  19. // 聲明控件
  20. private EditText et_name, et_pass;
  21. private TextView tv_result;
  22.  
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27.  
  28. // 獲取控件對象
  29. et_name = (EditText) findViewById(R.id.et_name);
  30. et_pass = (EditText) findViewById(R.id.et_pass);
  31. tv_result = (TextView) findViewById(R.id.tv_result);
  32. }
  33.  
  34. /**
  35. * 點擊按鈕控件觸發的事件
  36. * @param v
  37. */
  38. public void login(View v) {
  39. //獲取控件的id
  40. int id = v.getId();
  41. //根據id判斷進行相應的處理
  42. switch (id) {
  43. case R.id.btn_login:
  44. // 獲取控件的文本內容
  45. String userName = et_name.getText().toString();// 用戶名
  46. String userPass = et_pass.getText().toString();// 用戶密碼
  47. //判斷用戶名和密碼是否為空
  48. if (TextUtils.isEmpty(userName.trim())
  49. || TextUtils.isEmpty(userPass.trim())) {
  50. Toast.makeText(this, 用戶名或者密碼不能為空, Toast.LENGTH_LONG).show();
  51. } else {
  52. // 發送請求給服務器
  53. //調用:loginByAsyncHttpClientPost(userName, userPass);
  54. loginByAsyncHttpClientGet(userName, userPass);
  55. }
  56. break;
  57. }
  58. }
  59.  
  60. /**
  61. * 采用AsyncHttpClient的Post方式進行實現
  62. * @param userName
  63. * @param userPass
  64. */
  65. public void loginByAsyncHttpClientPost(String userName, String userPass) {
  66. AsyncHttpClient client = new AsyncHttpClient(); // 創建異步請求的客戶端對象
  67. String url = http://172.16.237.200:8080/video/login.do; // 定義請求的地址
  68. // 創建請求參數的封裝的對象
  69. RequestParams params = new RequestParams();
  70. params.put(username, userName); // 設置請求的參數名和參數值
  71. params.put(userpass, userPass);// 設置請求的參數名和參數
  72. // 執行post方法
  73. client.post(url, params, new AsyncHttpResponseHandler() {
  74. /**
  75. * 成功處理的方法
  76. * statusCode:響應的狀態碼; headers:相應的頭信息 比如 響應的時間,響應的服務器 ;
  77. * responseBody:響應內容的字節
  78. */
  79. @Override
  80. public void onSuccess(int statusCode, Header[] headers,
  81. byte[] responseBody) {
  82. if (statusCode == 200) {
  83. tv_result.setText(new String(responseBody)); // 設置顯示的文本
  84. }
  85. }
  86.  
  87. /**
  88. * 失敗處理的方法
  89. * error:響應失敗的錯誤信息封裝到這個異常對象中
  90. */
  91. @Override
  92. public void onFailure(int statusCode, Header[] headers,
  93. byte[] responseBody, Throwable error) {
  94. error.printStackTrace();// 把錯誤信息打印出軌跡來
  95. }
  96. });
  97. }
  98.  
  99. /**
  100. * 采用AsyncHttpClient的Get方式進行實現
  101. * @param userName
  102. * @param userPass
  103. */
  104. public void loginByAsyncHttpClientGet(String userName, String userPass) {
  105. // 創建異步的客戶端對象
  106. AsyncHttpClient client = new AsyncHttpClient();
  107. // 請求的地址
  108. String url = http://172.16.237.200:8080/video/login.do;
  109. // 創建請求參數的封裝的對象
  110. RequestParams params = new RequestParams();
  111. params.put(username, userName); // 設置請求的參數名和參數值
  112. params.put(userpass, userPass);// 設置請求的參數名和參數
  113.  
  114. // 發送get請求的時候 url地址 相應參數,匿名回調對象
  115. client.get(url, params,new AsyncHttpResponseHandler() {
  116. @Override
  117. public void onSuccess(int statusCode, Header[] headers,
  118. byte[] responseBody) {
  119. // 成功處理的方法
  120. System.out
  121. .println(statusCode------------------- + statusCode);
  122. // 遍歷頭信息
  123. for (int i = 0; i < headers.length; i++) {
  124. Header header = headers[i];
  125. System.out.println(header------------Name:
  126. + header.getName() + ,--Value:
  127. + header.getValue());
  128. }
  129. // 設置控件內容
  130. tv_result.setText(new String(responseBody));
  131. }
  132.  
  133. @Override
  134. public void onFailure(int statusCode, Header[] headers,
  135. byte[] responseBody, Throwable error) {
  136. // 失敗處理的方法
  137. error.printStackTrace();
  138. }
  139. });
  140. }
  141.  
  142. }
    3.程序運行結果如下圖:

     

    \

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved