編輯:關於Android編程
簡介:
Async-http是一款國外的開源框架,作者是loopj。是基於Apache HttpClient庫的。可以方便快速高效的進行網絡數據請求和發送,文件下載和上傳。
特點:
清晰的網絡請求回調
請求使用ThreadPool,限制並發資源使用情況
GET / POST基於參數構建使用(RequestParams),方便
Multipart 文件上傳,大數據上傳下載
自動智能請求重試,優化了質量不一的移動連接
內置響應解析成JSON,使用JsonHttpResponseHandler
持久化cookie存儲,保存cookie到你的應用程序的SharedPreferences
二進制文件(圖片等)的下載,使用BinaryHttpResponseHandler
用法:
建立請求首先建立請求客戶端對象。
然後進行相應的Get和Post請求,請求結果在回調裡獲取解析。
Async-http的Get和Post請求可以基於參數化請求(RequestParams),可以清晰方便的將你的請求參數放到裡面,然後進行Get和Post請求。
示例:
首先我們需要選擇一個網絡服務API,這裡我選擇聚合數據裡面的手機歸屬地查詢API,1注冊2申請,申請之後會為你的應用分配一個AppKey,下面是API說明:
/** * 接口地址:http://apis.juhe.cn/mobile/get 支持格式:JSON/XML 請求方式:GET/POST 請求示例:http://apis.juhe.cn/mobile/get?phone=13429667914&key=您申請的KEY 請求參數: 名稱 類型 必填 說明 phone int 是 需要查詢的手機號碼或手機號碼前7位 key string 是 應用APPKEY(應用詳細頁查詢) dtype string 否 返回數據的格式,xml或json,默認json 調用樣例及調試工具: API測試工具 返回字段: 名稱 類型 說明 error_code int 返回碼 reason string 返回說明 result string 返回結果集 province string 省份 city string 城市 areacode string 區號 zip string 郵編 company string 運營商 card string 卡類型 * */在使用Async-Http之前,必須將jar包放入工程中去,我這裡寫了一個示例代碼,如下:
public class MainActivity extends Activity implements OnClickListener{ // Get請求方式的URL private static final String URL_GET = "http://apis.juhe.cn/mobile/get?phone=18952201314&key=a53155cc6af64daabc66655b060db56a"; // Post請求方式的URL private static final String URL_POST = "http://apis.juhe.cn/mobile/get?"; //聲明一個AsyncHttpClient的變量 private AsyncHttpClient asyncHttpClient = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupViews(); initAsyncHttp(); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.button1: //用Get方式提交請求 asyncHttpGet(); break; case R.id.button2: //用Get方式提交請求 asyncHttpPost(); break; default: break; } } private void setupViews(){ findViewById(R.id.button1).setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); } //初始化asyncHttp private void initAsyncHttp(){ asyncHttpClient = new AsyncHttpClient(); } private void asyncHttpGet(){ //當Get請求被發送時,onStart、onSuccess或onFailure、onFinish方法將依次被回調 asyncHttpClient.get(URL_GET, new AsyncHttpResponseHandler(){ @Override public void onStart() { System.out.println("get request onStart..."); super.onStart(); } @Override public void onSuccess(String arg0) { String result = arg0; //如果需要將result通過Json解析封裝為對象,可參考《Android之Volley》中的代碼 System.out.println(result); super.onSuccess(arg0); } @Override public void onFailure(Throwable arg0) { System.out.println("get request onFailure..."); super.onFailure(arg0); } @Override public void onFinish() { System.out.println("get request onFinish..."); super.onFinish(); } }); } private void asyncHttpPost(){ //新建一個RequestParams對象用來存儲Post請求的參數 RequestParams requestParams = new RequestParams(); //設置請求參數 requestParams.put("phone", "18952201314"); requestParams.put("key", "a53155cc6af64daabc66655b060db56a"); //當Post請求被發送時,onStart、onSuccess或onFailure、onFinish方法將依次被回調 //因為返回的數據是json格式的,所以這裡的Handler可以選擇成JsonHttpResponseHandler asyncHttpClient.post(URL_POST, requestParams, new JsonHttpResponseHandler(){ @Override public void onStart() { System.out.println("post request onStart..."); super.onStart(); } @Override public void onSuccess(JSONObject arg0) { // 這裡回調參數直接是JSONObject類型,省去了我們一道程序 System.out.println(arg0.toString()); super.onSuccess(arg0); } @Override public void onFailure(Throwable arg0) { System.out.println("post request onFailure..."); super.onFailure(arg0); } @Override public void onFinish() { System.out.println("post request onFinish..."); super.onFinish(); } }); } }
Android Async-Http Demo
目錄English READMEGradle備注Demo版本TodoLicense動畫用法基本動畫位移動畫縮放動畫漸現、漸逝動畫旋轉動畫文字大小動畫TextView Si
游戲中攝像頭的原理介紹 在游戲開發中更新攝像頭的位置可以決定屏幕顯示的內容,尤其是RPG類游戲攝像頭有著非常重要的作用,我
在Android 的程序中設置項可以說是一個必須要有的頁面。下面說一下如何寫一個基本的設置頁面。我們先來看一下常用安卓程序的設置頁面:
微信那年今天搜不出來了?想必很多朋友最近朋友圈都給微信那年今天刷屏了吧,微信那年今天就是新版的微信增加了一個彩蛋,在微信搜索欄搜索“那年今天&r