在大神岩岩的推荐下使用了AsyncHttpClient框架,用过之后感觉还是灰常好用滴。
AsyncHttpClient是异步的,但是有时候我们需要得到请求的结果集来返回给某个函数,由于是异步的,所以不能够直接return会去,所以可以定义一个interface来给调用AsyncHttpClient方法的一个回调来获取结果集,代码如下:
定义回调接口:
-
private static Callback mCallback;
-
-
public interface Callback{
-
abstract void rankingsResultData(JSONArray result,int code);
-
abstract void postResultData(int result);
-
abstract void shareResultData(int result);
-
}
调用异步框架代码:
-
public static void getRankingList(int integType,int sortType,int size) {
-
mClient.post(GET_RANKINGList, getRankingsParms(integType,sortType,size), new JsonHttpResponseHandler(){
-
@Override
-
public void onSuccess(JSONObject response) {
-
if (response != null) {
-
try {
-
JSONObject status = response.getJSONObject("state");
-
int code = status.getInt("code");
-
JSONArray list = null;
-
if (code == 0) {
-
list = response.getJSONArray("items");
-
}
-
if(mCallback != null){
-
mCallback.rankingsResultData(list,code);
-
}
-
} catch (JSONException e) {
-
e.printStackTrace();
-
if(mCallback != null){
-
mCallback.rankingsResultData(null,2);
-
}
-
}
-
}
-
}
-
-
public void onFailure(Throwable e, JSONObject errorResponse) {
-
if(mCallback != null){
-
mCallback.rankingsResultData(null,-1);
-
}
-
}
-
-
public void onFailure(Throwable error, String content) {
-
if(mCallback != null){
-
mCallback.rankingsResultData(null,-1);
-
}
-
}
-
});
-
}
当调用
getRankingList 异步请求完成的时候会回调rankingsResultData来得到返回的数据或者能得到请求是否chengg
阅读(12023) | 评论(0) | 转发(0) |