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