一、引用开源框架方法。

方法一

Com包黏贴到项目中的src目录下

 

引用开源框架通过AsyncHttpClient处理get/post请求_开源框架

方法二

包到libs下

 

引用开源框架通过AsyncHttpClient处理get/post请求_开源框架_02

 

二、引用开源框架发送get请求给服务器步骤:

1.创建异步请求端对象

get请求,(get请求参数含义:请求的url地址;异步请求的handler)

(status:状态返回码,headers:头部请求信息,responseBody返回结果)设置控件内容

 

三、引用开源框架发送post请求给服务器步骤

创建异步请求端对象

发送post请求,(get请求参数含义:请求的url地址;异步请求的handler)

封装请求参数

在成功请求里(status:响应状态码,headers:响应头信息,responseBody相应内容的字节码)设置控件内容

补充:

post方法中传递参数时候可以创建RequestParams的对象,put进你所想要赋的值。如下图:

 

引用开源框架通过AsyncHttpClient处理get/post请求_开源框架_03

实例解析:当用户登录时,在界面输出用户是否登录成功

运行结果 

 

引用开源框架通过AsyncHttpClient处理get/post请求_get请求_04

      

引用开源框架通过AsyncHttpClient处理get/post请求_开源框架_05

项目实现

1.布局文件:同login布局文件




2.在AndroidManifest.xml添加internet权限


<uses-permission android:name="android.permission.INTERNET"/>


3.LoginActivity的代码(代码中详细加了注释,请仔细阅读)


1. package com.example.android_httpasync;
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. * 通过开源框架AsyncHttpClient的get/post请求处理
18. * @author zhaoyazhi
19. *
20. */
21. public class MainActivity extends Activity {
22. private EditText et_username;
23. private EditText et_password;
24.
25. private TextView tv_result;
26.
27. @Override
28. protected void onCreate(Bundle savedInstanceState) {
29. super.onCreate(savedInstanceState);
30. setContentView(R.layout.activity_login);
31. findView();
32. }
33.
34. /**
35. * 查找控件
36. */
37. public void findView() {
38. et_password = (EditText) findViewById(R.id.editpass);
39. et_username = (EditText) findViewById(R.id.editusername);
40. tv_result = (TextView) findViewById(R.id.tv_result);
41. }
42.
43. /**
44. * 登陆按钮操作
45. *
46. * @param v
47. */
48. public void login(View v) {
49. // 获取点击控件的id
50. int id = v.getId();
51. // 根据id进行判断
52. switch (id) {
53. case R.id.btn_login:// 进行登录操作
54. // 获取用户名密码
55. final String userName = et_username.getText().toString();
56. final String userPass = et_password.getText().toString();
57.
58. // 判断是否为空
59. if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(userPass)) {
60. "用户名或者密码不能为空", 0)
61. .show();
62. else {
63. "发送请求道服务器", 0).show();
64.
65. // loginByAsyncHttpClientGet(userName, userPass);
66.
67. loginAsyncHttpClientPost(userName, userPass);
68.
69. }
70. break;
71.
72. default:
73. break;
74. }
75. }
76.
77. /**
78. * 通过开源框架AsyncHttpClient的post请求处理
79. * @param userName
80. * @param userPass
81. */
82. private void loginAsyncHttpClientPost(final String userName,
83. final String userPass) {
84. // 发送请求到服务器
85. new AsyncHttpClient();
86. "http://172.16.237.144:8080/Login/LoginServlet";
87. // 创建请求参数
88. new RequestParams();
89. "username", userName);
90. "userpass", userPass);
91. // 执行post方法
92. new AsyncHttpResponseHandler() {
93.
94. @Override
95. public void onSuccess(int statusCode, Header[] headers,
96. byte[] responseBody) {
97. // 设置值
98. new String(responseBody));
99. }
100.
101. @Override
102. public void onFailure(int statusCode, Header[] headers,
103. byte[] responseBody, Throwable error) {
104. // 打印错误信息
105. error.printStackTrace();
106.
107. }
108. });
109. }
110.
111. /**
112. * 通过开源框架AsyncHttpClient的get请求处理
113. * @param userName
114. * @param userPass
115. */
116. private void loginByAsyncHttpClientGet(final String userName,
117. final String userPass) {
118. // 创建异步请求端对象
119. new AsyncHttpClient();
120.
121. "http://172.16.237.144:8080/Login/LoginServlet?username="
122. "&userpass=" + userPass;
123. // 发送get请求对象
124. new AsyncHttpResponseHandler() {
125. @Override
126. // statusCode:状态返回码,headers:头部请求信息,responseBody返回结果
127. public void onSuccess(int statusCode, Header[] headers,
128. byte[] responseBody) {
129. new String(responseBody));
130. }
131.
132. @Override
133. public void onFailure(int statusCode, Header[] headers,
134. byte[] responseBody, Throwable error) {
135. // 输出错误信息
136. error.printStackTrace();
137. }
138. });
139. }
140. }

 

onSuccess方法中加入一些测试语句:

 

引用开源框架通过AsyncHttpClient处理get/post请求_开源框架_06

在控制台输出结果如下:

 

 

引用开源框架通过AsyncHttpClient处理get/post请求_android_07