天天看點

AsyncHttpClient的使用

最近一直忙着出差,也沒時間更新部落格,現在回來了,可以正常的更新部落格了。

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

繼續閱讀