最近一直忙着出差,也沒時間更新部落格,現在回來了,可以正常的更新部落格了。
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:
https://github.com/kongkongdaren/AsyncHttpClientDemo