Android網絡請求庫——android-async-http

在iOS開發中有大名鼎鼎的ASIHttpRequest庫,用來處理網絡請求操作,今天要介紹的是一個在Android上同樣強大的網絡請求庫android-async-http,目前非常火的應用Instagram和Pinterest的Android版就是用的這個網絡請求庫。這個網絡請求庫是基於Apache HttpClient庫之上的一個異步網絡請求處理庫,網絡處理均基於Android的非UI線程,通過回調方法處理請求結果。

其主要特征如下:

處理異步Http請求,並通過匿名內部類處理回調結果

Http請求均位於非UI線程,不會阻塞UI操作

通過線程池處理並發請求

處理文件上傳、下載

響應結果自動打包JSON格式

自動處理連接斷開時請求重連

使用android-async-http也非常簡單,到官網http://loopj.com/android-async-http/下載依賴jar包,導入工程中libs文件夾下並添加到工程路徑即可。通過下面的代碼來創建一個異步請求:

[java]  

AsyncHttpClient client = new AsyncHttpClient();  

                client.get("http://www.baidu.com", new AsyncHttpResponseHandler() {  

                      

                    @Override  

                    public void onSuccess(String response) {  

                        System.out.println(response);  

                        textView.setText(response);  

                    }  

                      

                    @Override  

                    public void onStart() {  

                        super.onStart();  

                        System.out.println("onStart");  

                    }  

                      

                    @Override  

                    public void onFinish() {  

                        super.onFinish();  

                        System.out.println("onFinish");  

                    }  

                      

                }  

 

 

通過Get請求指定的URL並通過回調函數處理請求結果,同時,請求方式還支持POST和PUT,請求的同時還支持參數傳遞,下面看看如何通過JSON字符串作為參數訪問服務器:

[java] 

try {  

                    JSONObject jsonObject = new JSONObject();  

                    jsonObject.put("username", "ryantang");  

                    StringEntity stringEntity = new StringEntity(jsonObject.toString());  

                    client.post(MainActivity.this, "http://api.com/login", stringEntity, "application/json", new JsonHttpResponseHandler(){  

  

                        @Override  

                        public void onSuccess(JSONObject jsonObject) {  

                            super.onSuccess(jsonObject);  

                              

                        }  

                          

                    });  

                } catch (JSONException e) {  

                    e.printStackTrace();  

                } catch (UnsupportedEncodingException e) {  

                    e.printStackTrace();  

                }  

 

官方推薦的使用方法,使用一個靜態的請求對象,我們來看看官方例舉的一個訪問Twitter的API的例子:

使用方法:

 

由於涉及網絡請求,最後別忘瞭添加權限:

[html]  

<uses-permission android:name="android.permission.INTERNET" />  

 

其他功能例如上傳、下載文件等大傢可以去官網查看,我就不贅述瞭!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。