最近一直忙着出差,也没时间更新博客,现在回来了,可以正常的更新博客了。
AsyncHttpClient简介
AsyncHttpClient是专门针对Android在Apache的HttpClient基础上构建的异步的callback-based http client,可以大大简化网络请求操作,它的所有请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android Handler message 机制传递信息。
AsyncHttpClient特性
(1)采用异步http请求,并通过匿名内部类处理回调结果
(2)http请求独立在UI主线程之外
(3)采用线程池来处理并发请求
(4)采用RequestParams类创建GET/POST参数
(5)不需要第三方包即可支持Multipart file文件上传
(6)用BinaryHttpResponseHandler类下载二进制文件
(7)用JsonHttpResponseHandler类自动将响应结果解析为json格式
(8)持久化cookie存储,可以将cookie保存到你的应用程序的SharedPreferences中
AsyncHttpClient的使用
需要在build.gradle中添加依赖
compile 'com.loopj.android:android-async-http:1.4.9'
get请求的使用,示例代码:
String url="http://apis.juhe.cn/mobile/get?phone=15711492842&key=4e12ebd27315d998b61d2606f463b50d";
asyncHttpClient.get(url, null, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.e("ssss",new String(responseBody));
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
}
});
post请求的使用,示例代码:
String postUrl="http://v.juhe.cn/toutiao/index";
RequestParams params=new RequestParams();
params.put("type","社会");
params.put("key","4867f81a3bcde50c94e6103a95cde181");
asyncHttpClient.post(postUrl, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.e("ssss",new String(responseBody));
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
}
});
下载功能,示例代码:
String imgUrl="http://img.lanrentuku.com/img/allimg/1707/14988864745279.jpg";
asyncHttpClient.get(imgUrl, null, new BinaryHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] binaryData) {
Bitmap bitmap = BitmapFactory.decodeByteArray(binaryData, 0, binaryData.length);
Bitmap compressBitmap = compressImage(bitmap);
mIvPhoto.setImageBitmap(compressBitmap);
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] binaryData, Throwable error) {
}
});
上传文件功能,示例代码:
String uploadUrl="http://192.168.1.92:8080/webapps/ROOT";
File file=new File("/storage/emulated/0/66666.png");
RequestParams paramsFile=new RequestParams();
try {
paramsFile.put("hhhh",file);
asyncHttpClient.post(uploadUrl, paramsFile, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.e("success",new String(responseBody));
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.e("failure",error.getMessage());
}
});
} catch (FileNotFoundException e) {
e.printStackTrace();
}
上面的代码演示了如何使用 AsyncHttpClient ,相信 AsyncHttpClient 会给大家带来很大的便利。
Demo
csdn:
https://download.csdn.net/download/wen_haha/10600941
github: