Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Andorid Async-HttpClient解讀

Andorid Async-HttpClient解讀

編輯:關於Android編程

Async-httpclient是一個用於Android應用程序開發的http訪問開源框架,開源在GitHub上,由於今天在GitHub上沒有看到下載地址,我這裡提供一個下載地址,是之前從GitHub上下載的,版本是V1.4.5。GitHub上還是有很多開發人員提供了http訪問的封裝類,但是個人覺得Async-httpclient寫的很不錯,所以就總結下該開源包中的代碼結構和調用方式。

Async-httpclient開源包中提供http的同步和異步訪問,http的get、post、set、delete等方法,在調用http訪問接口時針對傳入不同的回調接口,返回數據也進行了不同的封裝,待仔細閱讀源碼之後,將會明了。

當解開資源包之後,?\library\src\main\java\com\loopj\android\http該目錄下就是作者寫的源碼了,就只有27個類,這裡建議將?\library\src\main\java\目錄下的文件夾com拷貝至Android工程的根目錄下,並將其設置為“use as source folder”,這樣在寫調用例子的時候,就能去邊看源碼邊寫代碼了。

源碼包中主要的類有

AsyncHttpClient.java異步http訪問類

SyncHttpClient.java同步http訪問類

AsyncHttpRequest.java繼承Runnable對象,真實訪問http的線程

ResponseHandlerInterface.javahttp訪問回調接口,有很多子類,分別對返回數據進行了封裝

主要就是這個4大類,其余的還有https的證書自定義類、http重定向、base64、cookie的保存、http訪問重試次數的設定等等。這些需要的時候可以添加。

在閱讀源碼時,ResponseHandlerInterface的子類眾多,體驗了一把什麼是重載和覆寫!這才是面向對象編程的思想。接下來一個簡單的例子能看出使用此開源包的代碼之簡潔,可以少寫很多不必要的重復代碼。

ResponseHandlerInterface的子類關系如下:

\

在實際的開發中建議http訪問實例寫成單例。

<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">public class MainActivity extends Activity { private static AsyncHttpClient mHttpClient = new AsyncHttpClient(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getData() ; } public void getData(){ mHttpClient.get("http://www.baidu.com", responseHandler) ; } AsyncHttpResponseHandler responseHandler = new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers,byte[] responseBody) { for(Header header :headers){ Log.e("onSuccess","" + header.getName() + " = " + header.getValue()) ; } Log.e("onSuccess","statusCode = " + statusCode + ", responseBody = " + new String(responseBody)) ; } @Override public void onFailure(int statusCode, Header[] headers,byte[] responseBody, Throwable error) { for(Header header :headers){ Log.e("onFailure","" + header.getName() + " = " + header.getValue()) ; } Log.e("onFailure","statusCode = " + statusCode + " ,responseBody = " + responseBody) ; } } ; }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved