android-async-http簡介 :
- Android中收集要求一樣平常應用Apache HTTP Client或採納HttpURLConnect,然則間接應用那兩個類庫須要寫大批的代碼才幹完成收集post戰get要求,而應用android-async-http那個庫能夠大大的簡化操。
android-async-http特性:
- 採用異步http請求,並通過匿名內部類處理回調結果
- http請求獨立在UI主線程之外
- 採用線程池來處理併發請求
- 採用RequestParams類創建GET/POST參數
- 不需要第三方包即可支持Multipart file文件上傳
- 大小隻有25kb
- 自動爲各種移動電話處理連接斷開時請求重連
- 超快的自動gzip響應解碼支持
- 使用BinaryHttpResponseHandler類下載二進制文件(如圖片)
- 使用JsonHttpResponseHandler類可以自動將響應結果解析爲json格式
- 持久化cookie存儲,可以將cookie保存到你的應用程序的SharedPreferences中
主要類介紹:
- AsyncHttpRequest:
繼承自Runabler,被submit至線程池執行網絡請求併發送start,success等消息。
- AsyncHttpResponseHandler:
接收請求結果,一般重寫onSuccess及onFailure接收請求成功或失敗的消息。
- TextHttpResponseHandler:
繼承自AsyncHttpResponseHandler,只是重寫了AsyncHttpResponseHandler的onSuccess和onFailure方法,將請求結果由byte數組轉換爲String。
- JsonHttpResponseHandler:
繼承自TextHttpResponseHandler,同樣是重寫onSuccess和onFailure方法,將請求結果由String轉換爲JSONObject或JSONArray
- BaseJsonHttpResponseHandler:
繼承自TextHttpResponseHandler,是一個泛型類,提供了parseResponse方法,子類需要提供實現,將請求結果解析成需要的類型,子類可以靈活地使用解析方法,可以直接原始解析,使用gson等。
- RequestParams:
請求參數,可以添加普通的字符串參數,並可添加File,InputStream上傳文件。
- SyncHttpClient:
繼承自AsyncHttpClient,同步執行網絡請求,AsyncHttpClient把請求封裝成AsyncHttpRequest後提交至線程池,SyncHttpClient把請求封裝成AsyncHttpRequest後直接調用它的run方法。
請求流程:
1、調用AsyncHttpClient的get或post等方法發起網絡請求。
2、所有的請求都走了sendRequest,在sendRequest中把請求封裝爲了AsyncHttpRequest,並添加到線程池執行。
3、當請求被執行時(既AsyncHttpRequest的run方法),執行AsyncHttpRequest的makeRequestWithRetries方法執行實際的請求,當請求訪問失敗時可以重試。並在請求開始,結束,成功或失敗的時候請求時傳的ResponseHandlerInterface實例發送消息.
4、基本上使用的都是AsyncHttpResponseHandler的子類,調用其onStart,onSuccess等方法返回請求結果。