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

一、引用开源框架方法。

方法一

找到下载文件的源码,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

源码:http://download.csdn.net/detail/zhaoyazhi2129/7400799

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值