官网:https://github.com/loopj/android-async-http
android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也简单,详细请看官网:
到官网下载zip包,解压,里面有完整的代码和各种版本的jar包和demo,源码在library里面,jar包在releases里面。项目更新速度很快,老版本的回调是一个普通类,最新版是一个接口。
以下代码是基于老版本的,记不清哪个版本了
通过一个url地址获取服务器的数据,只需要调用一个方法就行了。URl为请求服务数据的url地址。HCKHttpResponseHandler一个回调类,请求结束会调用它相应的方法,在回调方法里面,我们可以直接操作UI,而不会阻塞进程。下面代码是使用get方法获取数据,它还有post方法。
private HCKHttpClient httpClient=new HCKHttpClient();
String URL="http://www.baidu.com";
httpClient.get(URL,new HCKHttpResponseHandler() {
@Override
public void onFailure(Throwable error, String content) { // 请求失败,调用,有几个重载方法
super.onFailure(error, content);
Log.d(TAG,"获取数据失败: " + error + content);
}
@Override
public void onFinish(String url) { // 请求结束调用
super.onFinish(url);
Log.d(TAG,"获取数据结束 url地址:" + url);
}
@Override
public void onStart(String url) { // 请求开始调用
super.onStart(url);
Log.d(TAG,"请求开始:" + url);
}
@Override
public void onSuccess(int statusCode, Header[] headers,
String content) { // 请求成功调用,有几个重载方法
super.onSuccess(statusCode, headers, content);
Log.d(TAG,"获取数据成功: " + content);
for (int i = 0; i < headers.length; i++) {
Log.d(TAG,"获取数据成功:headers数据 " + headers[i] +"");
}
textView.setText(content);
}
});
其它实用方法,详细请看官网说明
// 带参数的
//RequestParamsparams = new RequestParams();
// params.put("id", 1 + "");
//httpClient.get("",params, new HCKHttpResponseHandler() {
// });
//
//
// 返回一个JSONObject的
// httpClient.get("", new JsonHttpResponseHandler(){
// @Override
// public void onSuccess(int statusCode, JSONObject response) {
// super.onSuccess(statusCode, response);
// }
// });
//
//
// 带参数的返回一个JSONObject的
// httpClient.get("url",params, new JsonHttpResponseHandler(){
//
// });
//
//
// 请求头增加参数的
// httpClient.addHeader(header, value);
// 设置超时的
// httpClient.setTimeout(timeout);
// post方法
// httpClient.post("", new HCKHttpResponseHandler(){});
Demo下载地址,里面有开源项目老版本的源码:源码,代码,大家可以根据需求,自己修改源码,实现自己需要。源码里面增加了一个url参数,可以方便我们打印url,查看url参数是否正确(源代码没有返回url)。
记得加入访问网络的权限