Android 網絡請求庫:Android Asynchronous Http Client
Android Asynchronous Http Client一看名字就知道它是基于Http Client的,但是呢在安卓中Http Client已經廢棄了,所以也不建議使用這個庫了。然后仍然有一些可取的內容值得學習,所以這里也介紹一下。
特點
- 所以請求在子線程中完成,請求回調在調用該請求的線程中完成
- 使用線程池
- 使用RequestParams類封裝請求參數
- 支持文件上傳
- 持久化cookie到SharedPreferences,個人感覺這一點也是這個庫的重要特點,可以很方便的完成一些模擬登錄
- 支持json
- 支持HTTP Basic Auth </ul>
- 編寫一個靜態的HttpClient </ul>
用法
import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams;/**
Created by lizhangqu on 2015/5/7. */ public class TestClient { private static final String BASE_URL = "
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.get(getAbsoluteUrl(url), params, responseHandler);
}
public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.post(getAbsoluteUrl(url), params, responseHandler);
}
private static String getAbsoluteUrl(String relativeUrl) {
return BASE_URL + relativeUrl;
} }</pre>
- 調用get或者post方法
參數通過RequestParams傳遞,沒有參數則傳遞null
RequestParams params = new RequestParams(); params.put("","");
- 如果要保存cookie,在發起請求之前調用以下代碼
PersistentCookieStore myCookieStore = new PersistentCookieStore(this); client.setCookieStore(myCookieStore);
之后請求所得到的cookie都會自動持久化
如果要自己添加cookie,則調用以下代碼
BasicClientCookie newCookie = new BasicClientCookie("cookiesare", "awesome"); newCookie.setVersion(1); newCookie.setDomain("mydomain.com"); newCookie.setPath("/"); myCookieStore.addCookie(newCookie);
使用
在回調函數中處理返回結果private void get(){ TestClient.get("test/index.php", null, new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); } private void post(){ RequestParams params = new RequestParams(); params.put("user","asas"); params.put("pass","12121"); params.put("time","1212121"); TestClient.post("test/login.php", params, new AsyncHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); }