android開源架構android-async-http

來源:互聯網
上載者:User

標籤:

這個很不錯的第三方開源類庫,針對Android開發中發送http請求的。

它的網路請求自動在非UI線程裡執行,你不需要任何額外的操作(比如手動new一個Thread之類)。項目的官方網站:http://loopj.com/android-async-http/,對應的github地址:https://github.com/loopj/android-async-http 它是專門針對Android在Apache的HttpClient基礎上構建的非同步callback-based http client。所有的請求 全在UI線程之外發生,而callback發生在建立它的線程中,應用了Android的Handler發送訊息機制。你也可以把AsyncHttpClient應用在 Service中或者後台線程中,庫代碼會自動識別出它所啟動並執行context。其特性包括: 1. 發送非同步http請求,在匿名callback對象中處理response; 2. http請求發生在UI線程之外; 3. 內部採用線程池來處理並發請求; 4. GET/POST 參數構造,通過RequestParams類。 5. 內建多部分檔案上傳,不需要第三方庫支援; 6. 流式Json上傳,不需要額外的庫; 7. 能處理環行和相對重新導向; 8. 和你的app大小相比來說,庫的size很小,所有的一切只有90kb; 9. 自動智能的請求重試機制在各種各樣的移動串連環境中; 10. 自動的gzip響應解碼; 11. 內建多種形式的響應解析,有原生的位元組流,string,json對象,甚至可以將response寫到檔案中; 12. 永久的cookie儲存,內部實現用的是Android的SharedPreferences; 13. 通過BaseJsonHttpResponseHandler和各種json庫整合; 14. 支援SAX解析器; 15. 支援各種語言和content編碼,不僅僅是UTF-8。 1. 建立一個AsyncHttpClient; 2. (可選的)通過RequestParams對象佈建要求參數; 3. 調用AsyncHttpClient的某個get方法,傳遞你需要的(成功和失敗時)callback介面實現,一般都是匿名內部類,實現了AsyncHttpResponseHandler,類庫自己也提供了好些現成的response handler,你一般不需要自己建立一個。 程式碼範例:
 1 import com.loopj.android.http.*; 2  3 public class TwitterRestClient { 4   private static final String BASE_URL = "http://api.twitter.com/1/"; 5  6   private static AsyncHttpClient client = new AsyncHttpClient(); 7  8   public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) { 9       client.get(getAbsoluteUrl(url), params, responseHandler);10   }11 12   public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {13       client.post(getAbsoluteUrl(url), params, responseHandler);14   }15 16   private static String getAbsoluteUrl(String relativeUrl) {17       return BASE_URL + relativeUrl;18   }19 }
 1 import org.json.*; 2 import com.loopj.android.http.*; 3  4 class TwitterRestClientUsage { 5     public void getPublicTimeline() throws JSONException { 6         TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() { 7             @Override 8             public void onSuccess(int statusCode, Header[] headers, JSONObject response) { 9                 // If the response is JSONObject instead of expected JSONArray10             }11             12             @Override13             public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {14                 // Pull out the first event on the public timeline15                 JSONObject firstEvent = timeline.get(0);16                 String tweetText = firstEvent.getString("text");17 18                 // Do something with the response19                 System.out.println(tweetText);20             }21         });22     }23 }

 

android開源架構android-async-http

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.