標籤:http 使用 os io 資料 art ar 代碼
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