您的位置:首页 > 理论基础 > 计算机网络

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

2014-12-03 11:00 543 查看

一、引用开源框架方法。


方法一

找到下载文件的源码,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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: