在iOS開(kāi)發(fā)中有大名鼎鼎的ASIHttpRequest庫(kù),用來(lái)處理網(wǎng)絡(luò)請(qǐng)求操作,今天要介紹的是一個(gè)在Android上同樣強(qiáng)大的網(wǎng)絡(luò)請(qǐng)求庫(kù)android-async-http,目前非常火的應(yīng)用Instagram和Pinterest的Android版就是用的這個(gè)網(wǎng)絡(luò)請(qǐng)求庫(kù)。這個(gè)網(wǎng)絡(luò)請(qǐng)求庫(kù)是基于Apache HttpClient庫(kù)之上的一個(gè)異步網(wǎng)絡(luò)請(qǐng)求處理庫(kù),網(wǎng)絡(luò)處理均基于Android的非UI線程,通過(guò)回調(diào)方法處理請(qǐng)求結(jié)果。 其主要特征如下:
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.baidu.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
textView.setText(response);
}
@Override
public void onStart() {
super.onStart();
System.out.println("onStart");
}
@Override
public void onFinish() {
super.onFinish();
System.out.println("onFinish");
}
}
通過(guò)Get請(qǐng)求指定的URL并通過(guò)回調(diào)函數(shù)處理請(qǐng)求結(jié)果,同時(shí),請(qǐng)求方式還支持POST和PUT,請(qǐng)求的同時(shí)還支持參數(shù)傳遞,下面看看如何通過(guò)JSON字符串作為參數(shù)訪問(wèn)服務(wù)器:
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "ryantang");
StringEntity stringEntity = new StringEntity(jsonObject.toString());
client.post(MainActivity.this, "http://api.com/login", stringEntity, "application/json", new JsonHttpResponseHandler(){
@Override
public void onSuccess(JSONObject jsonObject) {
super.onSuccess(jsonObject);
}
});
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
});
官方推薦的使用方法,使用一個(gè)靜態(tài)的請(qǐng)求對(duì)象,我們來(lái)看看官方例舉的一個(gè)訪問(wèn)Twitter的API的例子:
發(fā)表評(píng)論