介紹
android中網(wǎng)絡(luò)訪問的第三方庫github 地址:https://github.com/loopj/android-async-http
android-async-http主頁:http://loopj.com/android-async-http/
特性
- 發(fā)送異步http請求陕贮,在匿名callback對象中處理response信息篇恒;
- http請求發(fā)生在UI(主)線程之外的異步線程中产喉;
- 內(nèi)部采用線程池來處理并發(fā)請求;
- 通過RequestParams類構(gòu)造GET/POST浦徊;
- 內(nèi)置多部分文件上傳坛善,不需要第三方庫支持喘蟆;
- 流式Json上傳镇眷,不需要額外的庫;
- 能處理環(huán)行和相對重定向吠各;
- 和你的app大小相比來說臀突,庫的size很小,所有的一切只有90kb贾漏;
- 在各種各樣的移動連接環(huán)境中具備自動智能請求重試機制候学;
- 自動的gzip響應(yīng)解碼;
- 內(nèi)置多種形式的響應(yīng)解析纵散,有原生的字節(jié)流梳码,string隐圾,json對象,甚至可以將 response寫到文件中掰茶;
- 永久的cookie保存暇藏,內(nèi)部實現(xiàn)用的是Android的SharedPreferences;
- 通過BaseJsonHttpResponseHandler和各種json庫集成濒蒋;
- 支持SAX解析器盐碱;
- 支持各種語言和content編碼,不僅僅是UTF-8沪伙;
Gradle 中引用
在app的buid.gradle中添加
compile 'com.loopj.android:android-async-http:1.4.9'
使用
官方建議是通過靜態(tài)類的方法來使用
twitter的例子
<pre> import com.loopj.android.http.*;
public class TwitterRestClient {
private static final String BASE_URL = "https://api.twitter.com/1/";
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>
在client 端就可以這么用了
import org.json.*;import com.loopj.android.http.*;class TwitterRestClientUsage {
public void getPublicTimeline() throws JSONException { TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// If the response is JSONObject instead of expected JSONArray }
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
// Pull out the first event on the public timeline
JSONObject firstEvent = timeline.get(0);
String tweetText = firstEvent.getString("text");
// Do something with the response
System.out.println(tweetText);
}
});
}
傳參:
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");