一、引用开源框架方法。
方法一
找到下载文件的源码,Com包黏贴到项目中的src目录下
方法二
引入jar包到libs下
二、引用开源框架发送get请求给服务器步骤:
1.创建异步请求端对象
2.发送get请求,(get请求参数含义:请求的url地址;异步请求的handler)
3.在成功请求里(status:状态返回码,headers:头部请求信息,responseBody返回结果)设置控件内容
三、引用开源框架发送post请求给服务器步骤
1.创建异步请求端对象
2.发送post请求,(get请求参数含义:请求的url地址;异步请求的handler)
3.封装请求参数
4.在成功请求里(status:响应状态码,headers:响应头信息,responseBody相应内容的字节码)设置控件内容
补充:
查看帮助文档我们知道,在post方法中传递参数时候可以创建RequestParams的对象,put进你所想要赋的值。如下图:
实例解析:当用户登录时,在界面输出用户是否登录成功
运行结果
项目实现
1.布局文件:同login布局文件
http://blog.csdn.net/zhaoyazhi2129/article/details/26509763
2.在AndroidManifest.xml添加internet权限
<uses-permission android:name="android.permission.INTERNET"/>
3.LoginActivity的代码(代码中详细加了注释,请仔细阅读)
- package com.example.android_httpasync;
- 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;
- /**
- * 通过开源框架AsyncHttpClient的get/post请求处理
- * @author zhaoyazhi
- *
- */
- public class MainActivity extends Activity {
- private EditText et_username;
- private EditText et_password;
- private TextView tv_result;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_login);
- findView();
- }
- /**
- * 查找控件
- */
- public void findView() {
- et_password = (EditText) findViewById(R.id.editpass);
- et_username = (EditText) findViewById(R.id.editusername);
- 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:// 进行登录操作
- // 获取用户名密码
- final String userName = et_username.getText().toString();
- final String userPass = et_password.getText().toString();
- // 判断是否为空
- if (TextUtils.isEmpty(userName) || TextUtils.isEmpty(userPass)) {
- Toast.makeText(getApplicationContext(), "用户名或者密码不能为空", 0)
- .show();
- } else {
- Toast.makeText(getApplicationContext(), "发送请求道服务器", 0).show();
- // loginByAsyncHttpClientGet(userName, userPass);
- loginAsyncHttpClientPost(userName, userPass);
- }
- break;
- default:
- break;
- }
- }
- /**
- * 通过开源框架AsyncHttpClient的post请求处理
- * @param userName
- * @param userPass
- */
- private void loginAsyncHttpClientPost(final String userName,
- final String userPass) {
- // 发送请求到服务器
- AsyncHttpClient client = new AsyncHttpClient();
- String url = "http://172.16.237.144:8080/Login/LoginServlet";
- // 创建请求参数
- RequestParams params = new RequestParams();
- params.put("username", userName);
- params.put("userpass", userPass);
- // 执行post方法
- client.post(url, params, new AsyncHttpResponseHandler() {
- @Override
- public void onSuccess(int statusCode, Header[] headers,
- byte[] responseBody) {
- // 设置值
- tv_result.setText(new String(responseBody));
- }
- @Override
- public void onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- // 打印错误信息
- error.printStackTrace();
- }
- });
- }
- /**
- * 通过开源框架AsyncHttpClient的get请求处理
- * @param userName
- * @param userPass
- */
- private void loginByAsyncHttpClientGet(final String userName,
- final String userPass) {
- // 创建异步请求端对象
- AsyncHttpClient client = new AsyncHttpClient();
- String url = "http://172.16.237.144:8080/Login/LoginServlet?username="
- + userName + "&userpass=" + userPass;
- // 发送get请求对象
- client.get(url, new AsyncHttpResponseHandler() {
- @Override
- // statusCode:状态返回码,headers:头部请求信息,responseBody返回结果
- public void onSuccess(int statusCode, Header[] headers,
- byte[] responseBody) {
- tv_result.setText(new String(responseBody));
- }
- @Override
- public void onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- // 输出错误信息
- error.printStackTrace();
- }
- });
- }
- }
为了加强我们理解,在onSuccess方法中加入一些测试语句:
在控制台输出结果如下:
jar文件资源:http://download.csdn.net/detail/zhaoyazhi2129/7400787