1. 程式人生 > >android-async-http AsyncHttpClient介紹和使用

android-async-http AsyncHttpClient介紹和使用

轉自http://www.cnblogs.com/xiaoweiz/p/3916790.html

及http://blog.csdn.net/redarmy_chen/article/details/26976463

android-async-http 是針對Android開發中傳送http請求的第三方開源庫。

在Android開發中,傳送、處理http請求簡直太常見了,以至於我們的程式碼裡到處充斥著各種HttpClient和與之相關又臭又長的程式碼,

它們存在於你程式碼的各個角落,每次看見都令人作嘔,而你僅僅是為了server能返回一個string或者json給你。每次當我自己寫這樣

的程式碼時,我都會想能不能簡化下這個流程,可能2、3行程式碼就能搞定。因為針對最簡單的case,我只需要提供request url,成功時的

callback和(或)失敗時的callback,僅此而已。針對這一類問題(需求),可以說android-async-http提供了幾乎完美的解決方案。

通過使用它可以大大簡化你的程式碼,不僅如此,你的程式碼看上去也優雅多了。

  當我第一眼看到它時就被吸引住了,特別是async關鍵字,幹我們這行的都知道,這是非同步執行,也就是說它的網路請求自動在非UI

執行緒裡執行,你不需要任何額外的操作(比如手動new一個Thread之類)。專案的官方網站:

  我這裡簡要介紹下:它是專門針對Android在Apache的HttpClient基礎上構建的非同步的callback-based http client。所有的請求

全在UI執行緒之外發生,而callback發生在建立它的執行緒中,應用了Android的Handler傳送訊息機制。你也可以把AsyncHttpClient應用在

Service中或者後臺執行緒中,庫程式碼會自動識別出它所執行的context。它的feature包括:

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。

大概翻譯了下,這些只是大體的概覽,具體的細節還得在使用過程中慢慢感受、學習。

  接下來,帶領大家看看應用android-async-http來寫程式碼是個啥樣子。簡單來說你只需要3步,

1. 建立一個AsyncHttpClient;

2. (可選的)通過RequestParams物件設定請求引數;

3. 呼叫AsyncHttpClient的某個get方法,傳遞你需要的(成功和失敗時)callback介面實現,一般都是匿名內部類

,實現了AsyncHttpResponseHandler,類庫自己也提供了好些現成的response handler,你一般不需要自己建立一個。

2.Installation & Basic Usage(安裝和基本用法)

     Download the latest .jar file from github and place it in your Android app’s libs/ folder.

     從github上下載最新的最新的jar檔案.並將其放置在你的Android應用程式的libs /資料夾.

 2.1下載方式:

點選DownLoad即可下載最新的jar檔案


找到DownLoad ZIP進行下載檔案,解壓後的目錄如下


examples:裡面有簡單的例子

library:裡面存放的是android-async-http開源專案的原始碼(方法一:可以把library\src\main\java檔案下面的檔案拷貝到,你應用的src下也可以直接使用)

releases:裡面存放的是各個版本的jar檔案,(方法二:只需把最新的jar檔案拷貝到你應用的libs目錄下即可.)

samples:裡面存放的也是例子(可供參考)

備註:方法一和方法二隻能採用其中之一,建議採用方法二

2.2使用方法

Import the http package.

import com.loopj.android.http.*;

Create a new AsyncHttpClient instance and make a request:

AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(String response) {
        System.out.println(response);
    }
});

Adding GET/POST Parameters with RequestParams

The RequestParams class is used to add optional GET or POST parameters to your requests.RequestParams can be built and constructed in various ways:

Create empty RequestParams and immediately add some parameters:

RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");

Create RequestParams for a single parameter:

RequestParams params = new RequestParams("single", "value");

Create RequestParams from an existing Map of key/value strings:

HashMap<String, String> paramMap = new HashMap<String, String>();
paramMap.put("key", "value");
RequestParams params = new RequestParams(paramMap);

Add an InputStream to the RequestParams to upload:

InputStream myInputStream = blah;
RequestParams params = new RequestParams();
params.put("secret_passwords", myInputStream, "passwords.txt");

Add a File object to the RequestParams to upload:

File myFile = new File("/path/to/file.png");
RequestParams params = new RequestParams();
try {
    params.put("profile_picture", myFile);
} catch(FileNotFoundException e) {}

Add a byte array to the RequestParams to upload:

byte[] myByteArray = blah;
RequestParams params = new RequestParams();
params.put("soundtrack", new ByteArrayInputStream(myByteArray), "she-wolf.mp3");

Downloading Binary Data with BinaryHttpResponseHandler

The BinaryHttpResponseHandler class can be used to fetch binary data such as images and other files. For example:

AsyncHttpClient client = new AsyncHttpClient();
String[] allowedContentTypes = new String[] { "image/png", "image/jpeg" };
client.get("http://example.com/file.png", new BinaryHttpResponseHandler(allowedContentTypes) {
    @Override
    public void onSuccess(byte[] fileData) {
        // Do something with the file
    }
});

相關推薦

android-async-http AsyncHttpClient介紹使用

轉自http://www.cnblogs.com/xiaoweiz/p/3916790.html 及http://blog.csdn.net/redarmy_chen/article/details/26976463 android-async-http 是針對Androi

Android開源框架AsyncHttpClient android async http 使用

                    android-async-http 開源框架可以使我們輕鬆地獲取網路資料或者向伺服器傳送資料,最關鍵的是,它是非同步框架,在底層使用執行緒池處理併發請求,效率很高,使用又特別簡單。    以往我們在安卓上做專案,比如要下載很多圖片、網頁或者其他的資源,多數開發者會選擇

利用loopj的android-async-http進行文件上傳

android 上傳文件 學習到了安卓上傳文件了!!! 在Android端,用到的是android-async-http框架, github地址為:https://github.com/koush/AndroidAsync/ 在AS中搭建該框架超級簡單,只需要在build.gradle中加

android-async-http框架

ati post提交 absolut display tails amp 請求 -h outside android-async-http 簡單介紹:An asynchronous, callback-based Http client for Andro

關於android-async-http 1.4.9的問題

在Android開發中使用了android-async-http-1.4.9.jar,發現無法連線上區域網的伺服器(外網可以連,將區域網IP變成域名也可以連),出現如下異常: java.net.UnknownHostException: Unable to resolve host "b

android 官方DrawerLayout的介紹使用

drawerLayout是Support Library包中實現了側滑選單效果的控制元件,可以說drawerLayout是因為第三方控制元件如MenuDrawer等的出現之後,google借鑑而出現的產物。drawerLayout分為側邊選單和主內容區兩部分,側邊選單可以根據手勢展開與隱藏(drawerLay

Android中logcat的介紹使用

 logcat日誌的等級劃分 等級從低到高排列 verbose :冗餘,最低等級。  黑色 debug:除錯資訊 藍色 info:  普通訊息 綠色 warning :警告 橙色 error:錯誤 紅色 assert:斷言                級別最高   除

facebook的Android除錯工具Stetho介紹使用注意事項

facebook的Android除錯工具Stetho介紹  一、前言      Chrome的Developer Tools對於WEB開發者來講幾乎是一個神器,而Chrome Store裡也有無奇不有的外掛,如果Chrome能調安卓應用應該是一件美好的事,而Facebook

android-async-http使用總結

其實apache還是提供了釋放 連線資源的方法的,不過是埋得深了點。  ? 1 httpClient.getConnectionManager().shutdown(); 這個shutdown並不是將手機網路斷掉,而是將建立Http連線請求時所分配的資

Android 開源網路框架(Android-Async-Http、Volley、OkHttp3、Retrofit2.0)對比

思維導圖 一、為什麼要使用網路開源框架 1. Android系統自帶網路請求 Android系統自帶的網路請求模組有兩個,一個是HttpClient,另一個是HttpUrlConnection。 1.1. HttpUrlConnection HttpURLCon

android-async-http使用

android-async-http是基於Apache HttpClient專門用於android的非同步http請求,所有的請求都在非UI執行緒執行。API比較全面,使用比較簡單,而且在CallBack中使用了Handler訊息機制,我們可以在回撥方法onSuccess,

開源庫android-async-http新增https請求方式

這幾天由於專案要求將http轉換成https請求,要求不做證書驗證。而我使用的是loopj的開源庫android-async-http來完成伺服器請求,但是此庫並未有相關https的示例,故自己動手豐衣足食。經過一番摸索,現記錄如下:封裝了一個httpclient幫助類,以

android-async-http的簡單使用

在Android中為我們提供了兩種Http請求方式:HttpURLConnection以及HttpClient。這兩者可以幫助我們瞭解在Android中對HTTP請求的處理。但是一般實際開發中都是使用別人封裝好的第三方網路請求框架,因為網路操作涉及到非同步以及多

使用開源框架android-async-http-1.4.8.jar與伺服器傳輸資料

先在libs資料夾下放入android-async-http-1.4.8.jar 原始碼 public class MainActivity extends Activity { private TextView username; pri

Android進程間通信(IPC)機制Binder簡要介紹學習計劃

trac named 組成 get tle 能力 計劃 英文 其中 轉自:http://blog.csdn.net/luoshengyang/article/details/6618363/ 在Android系統中,每一個應用程序都是由一些Activity和Ser

(轉)Android學習-使用Async-Http實現圖片壓縮並上傳功能

activit 一次 make down cte hot for lfw ram (轉)Android學習-使用Async-Http實現圖片壓縮並上傳功能 文章轉載自:作者:RyaneLee鏈接:http://www.jianshu.com/p/940fc7ba39e1

HTTP 之 curlelinks工具介紹

curl elinks1 概述curl是基於URL語法在命令行方式下工作的文件傳輸工具,字符命令,可以用於腳本,它支持FTP,FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支持HTTPS認證,並且支持HTTP的POST、PUT等方法,F

HTTP 之 httpd-2.4介紹配置

httpd2.4 常見配置 1 概述HTTPD 2.4默認是用於centOS7上,該軟件相比於HTTPD2.2 有了功能的改進。本文將對httpd2.4的新功能進行介紹,並介紹相關的常見配置2 HTTPD 新特性.(1) MPM支持運行為DSO機制;以模塊形式按需加載,DSO:動態的共享模塊.(2) e

Android OpenSL ES 開發:Android OpenSL 介紹開發流程說明

ror logic ogr activity engine eid 優化 als 分享 一、Android OpenSL ES 介紹 OpenSL ES (Open Sound Library for Embedded Systems)是無授權費、跨平臺、針對嵌入式系統精心

Android List、SetMap的介紹使用

一、前言 Android中常用的資料結構包括List、Set和Map這三大類的集合,其中List和Set屬於Collection。List與Set的區別在於List可以存放重複的資料,但是Set不可以。 Map一般為key-value這樣的對於關係,比如常用的HashMap。 And