Android封裝數據請求AsyncHttpClient 和 Volley

將 AsyncHttpClient 和 Volley 的jar導入的libs目錄下面,android

導入碰見的問題,導入後到時沒有對應的類,,解決方法,在你導入的包下面右擊點擊add to Library。。就能夠了。是否是很菜啊。我菜我快樂。。apache

1 NetRequest 封裝的數據請求,,跟加載圖片  json

2 NetUtil 配置請求數據。。緩存

3 macro 存放的是宏。。async

4 HomepageGross 跟 HomepageRollAndData是數據model,ide

5 RequestResultModel 請求數據結果函數

6 RequestResultUtil  處理請求的數據工具

  1 NetRequest 類
  2 
  3 /**
  4  * Created by liyongqiang on 15/6/11.
  5  */
  6 
  7 import  android.content.Context;
  8 import android.graphics.Bitmap;
  9 import android.support.v4.graphics.BitmapCompat;
 10 import android.util.LruCache;
 11 
 12 import com.android.volley.RequestQueue;
 13 import com.android.volley.toolbox.ImageLoader;
 14 import com.android.volley.toolbox.ImageLoader.ImageCache;
 15 import com.android.volley.toolbox.Volley;
 16 import com.loopj.android.http.AsyncHttpClient;
 17 import com.loopj.android.http.AsyncHttpRequest;
 18 import com.loopj.android.http.AsyncHttpResponseHandler;
 19 import com.loopj.android.http.JsonHttpResponseHandler;
 20 import com.loopj.android.http.RequestParams;
 21 import com.loopj.android.http.ResponseHandlerInterface;
 22 
 23 
 24 import org.apache.http.client.utils.URLEncodedUtils;
 25 
 26 public class NetRequest {
 27 
 28     private static NetRequest netRequest = null;
 29 
 30     // 圖片加載
 31     private Context context;
 32     /** 上下文 */
 33     private Context content;
 34 
 35     /** 圖片請求隊列 */
 36     private RequestQueue imageRequestQ;
 37 
 38     /** 圖片ImageLoader */
 39     private ImageLoader imageLoader;
 40 
 41     /** 圖片緩存LRU */
 42     private ImageCache imageCache;
 43 
 44     /** LRU緩存的數量。爲了防止溢出,通常不要超過60 */
 45    final LruCache<String,Bitmap> lruCache = new LruCache<String, Bitmap>(20);
 46 
 47     // 網路請求
 48     private AsyncHttpClient client;
 49 
 50 
 51     /* 構造函數 */
 52     // 圖片加載構造函數
 53    private NetRequest(Context context){
 54         this.content = context;
 55         this.imageRequestQ = Volley.newRequestQueue(this.content);
 56         this.imageCache = new ImageCache() {
 57             @Override
 58             public Bitmap getBitmap(String s) {
 59                 return lruCache.get(s);
 60             }
 61             @Override
 62             public void putBitmap(String s, Bitmap bitmap) {
 63                 lruCache.put(s,bitmap);
 64             }
 65         };
 66         this.imageLoader = new ImageLoader(imageRequestQ, imageCache);
 67     };
 68 
 69     // 網路請求構造函數
 70     private  NetRequest(Context context, String request){
 71         this.client = new AsyncHttpClient();
 72         this.client.setTimeout(11000);
 73         this.content = context;
 74     }
 75 
 76 
 77 
 78     /** 單例模式 */
 79     // 圖片單例
 80     public static NetRequest sharedNetRequestWithImage(Context context){
 81         if (netRequest == null){
 82             synchronized (NetRequest.class){
 83                 if(netRequest == null){
 84                     netRequest = new NetRequest(context);
 85                 }
 86             }
 87         }
 88         return netRequest;
 89     }
 90 
 91     // 數據請求單例
 92     public static NetRequest shareNetRequestWithRequest(Context context){
 93         if (netRequest == null){
 94             synchronized (NetRequest.class){
 95                 if(netRequest == null){
 96                     netRequest = new NetRequest(context,"request");
 97                 }
 98             }
 99         }
100         return netRequest;
101     }
102 
103     /**
104      * get 請求
105      * */
106     public void get_request_async(String urlStr,AsyncHttpResponseHandler res){
107         this.client.get(this.context,urlStr, res);
108     }
109 
110     public void get_request_json(String urlStr,JsonHttpResponseHandler res){
111         this.client.get(this.context, urlStr,res);
112     }
113 
114 
115     /**
116      * post 請求
117      * */
118     public void post_request_async(String urlStr,RequestParams params,AsyncHttpResponseHandler res){
119         this.client.post(this.context, urlStr, params, res);
120     }
121 
122     public void post_request_json(String urlStr, RequestParams params,JsonHttpResponseHandler res){
123         this.client.post(this.context, urlStr,params, res);
124     }
125 
126 
127     /** get set*/
128     public ImageLoader getImageLoader() {
129         return imageLoader;
130     }
131 }
NetUtil 類

/**
 * Created by liyongqiang on 15/6/11.
 */
public class NetUtil {

    public interface Request_call_back {
        /**
         * 請求返回的結果
         */
        public void request_back_result(RequestResultModel model);
    }


    /** 防止工具類被實例化 */

    public void NetUtil(){
        throw new AssertionError("不能實例化對象,數據請求NetUtil");
    }

    /*
    * 圖片加載
    * */
    public static ImageContainer loafImage(Context content, String imageUrl,ImageView imageV,final int defaultImageResId, final int errorImageResId){
      NetRequest netRequest = NetRequest.sharedNetRequestWithImage(content);
      return netRequest.getImageLoader().get(imageUrl,ImageLoader.getImageListener(imageV, defaultImageResId, errorImageResId));
    }

    /**
     * get請求
     * */
    public static void get_request_async(String requestTag,Context context, String urlStr){
        NetRequest netRequest = NetRequest.shareNetRequestWithRequest(context);
        netRequest.get_request_async(urlStr, new AsyncHttpResponseHandler() {

            @Override
            public void onStart() {
                System.out.println("開始");
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] bytes) {
                if (statusCode == 200) {

                } else {

                }
                System.out.println("成功" + statusCode + bytes);
            }

            @Override
            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                System.out.println("失敗");
            }

            @Override
            public void onFinish() {
                System.out.println("結束");
            }
        });
    }

    public static void get_request_json(final String requestTag,Context context,String urlStr){

        NetRequest netRequest = NetRequest.shareNetRequestWithRequest(context);
        netRequest.get_request_json(urlStr, new JsonHttpResponseHandler() {


                    @Override
                    public void onStart() {
                        System.out.println("開始");

                    }

                    @Override
                    public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                        System.out.println("成功" + statusCode + "數據" + response);

                    }

                    @Override
                    public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                        System.out.println("失敗");
                    }

                    @Override
                    public void onFinish() {
                        System.out.println("結束");
                    }
                }
        );
    }


    /**
     *
     * post請求
     * */
    public static void  post_request_Async(String RequestTag, Context context, String urlStr, RequestParams params){
        NetRequest netRequest = NetRequest.shareNetRequestWithRequest(context);
        netRequest.post_request_async(urlStr, params, new AsyncHttpResponseHandler() {
            @Override
            public void onStart() {
                System.out.println("開始");
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] bytes) {
                if (statusCode == 200) {

                } else {

                }
                System.out.println("成功" + statusCode + bytes);
            }

            @Override
            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                System.out.println(i + "失敗" + throwable);
            }

            @Override
            public void onFinish() {
                System.out.println("結束");
            }
        });
    }


    public static void post_request_Json(final String requestTag, final Context context, String urlStr, final RequestParams params, final Request_call_back request_call_back){
        NetRequest netRequest = NetRequest.shareNetRequestWithRequest(context);
        netRequest.post_request_json(urlStr, params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                    request_call_back.request_back_result(RequestResultUtil.request_handle_result(null, requestTag, DataRequestMacro.kResultStart));

            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                System.out.println("statusCode"+statusCode);
                if(statusCode == 200){
                    request_call_back.request_back_result(RequestResultUtil.request_handle_result(response, requestTag, DataRequestMacro.kResultSucceess));
                }else {
                    request_call_back.request_back_result(RequestResultUtil.request_handle_result(null, requestTag, DataRequestMacro.kResultFail));
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                request_call_back.request_back_result(RequestResultUtil.request_handle_result(null, requestTag, DataRequestMacro.kResultFail));
            }

            @Override
            public void onFinish() {
                    request_call_back.request_back_result(RequestResultUtil.request_handle_result(null, requestTag, DataRequestMacro.kResultFinish));
            }
        });
    }

    /*
    * 處理連接
    * */
    public static RequestParams params_route_data(Map routeMap,Map dataMap){
        RequestParams requestParams = new RequestParams();
        requestParams.put("power",DataRequestMacro.kPowerStr);
        if (routeMap != null){
            JSONObject routeObj = new JSONObject(routeMap);
            requestParams.put("route",routeObj);
        }
        if (dataMap != null){
            JSONObject dataObj = new JSONObject(dataMap);
            requestParams.put("data", dataObj);
        }
     return requestParams;
    }

 

RequestResultModel 請求的結果
/**
 * Created by liyongqiang on 15/6/16.
 */
public class RequestResultModel {
    public int resultCode;
    public String requestTag;
    public String status;
    public Object data;
}

 

RequestResultUtil  數據處理
/**
 * Created by liyongqiang on 15/6/16.
 */
public class RequestResultUtil {

    public RequestResultUtil(){
        throw new AssertionError("不能實例化對象");
    }

    public static RequestResultModel request_handle_result(JSONObject response, String reqeuestTag,int statusCode) {
    if (reqeuestTag.equals(DataRequestMacro.kTagHomePageRoll)){
       return homepageRollModel(response,reqeuestTag,statusCode);
    } return null;
    }


    /*
    * 首頁輪播數據model處理
    * */
    private static RequestResultModel homepageRollModel(JSONObject response, String requestTag,int statusCode){
        RequestResultModel model = new RequestResultModel();
        model.requestTag = requestTag;
        model.resultCode = statusCode;

        if (statusCode == DataRequestMacro.kResultSucceess){
            JSONObject resMap = response;
            JSONArray srollList = null;
            JSONObject statisticsMap = null;
            String stutas = null;
            HomepageGross gross = new HomepageGross();
            ArrayList list = new ArrayList();
            HashMap map = new HashMap();
            try {
                srollList = (JSONArray)resMap.get("scroll");
                statisticsMap = (JSONObject)resMap.get("statistics");
                stutas = (String)resMap.get("status");
                gross.clinic = (String)statisticsMap.get("clinic");
                gross.doctor = (String)statisticsMap.get("doctor");
                gross.groupon = (String)statisticsMap.get("groupon");
                gross.goods = (String)statisticsMap.get("goods");
            } catch (JSONException e) {
                e.printStackTrace();
            }
               for (int i=0;i<srollList.length();i++){
                   JSONObject scrollMap = null;
                   HomepageRollAndData rollAndData = new HomepageRollAndData();

                   try {
                       scrollMap = (JSONObject)srollList.get(i);
                       rollAndData.src = (String)scrollMap.get("src");
                       rollAndData.href = (String)scrollMap.get("href");
                   }catch (JSONException e){

                   }
                   list.add(rollAndData);
               }
               map.put("status", stutas);
               map.put("scroll", list);
               map.put("statistics",gross);
               model.data = map;
        }
        return model;
    }

    /*
    * 有頁面社區
    * */

    public static RequestResultModel homepageComModel(JSONObject response, String requestTag,int statusCode){
        return null;
    }

 

感受封裝完簡單了不少,有沒有。oop

 1 開始請求
 2  Map routeDict =new HashMap();
 3         routeDict.put(DataRequestMacro.kFunction,DataRequestMacro.kHomepageRoll);
 4         routeDict.put(DataRequestMacro.kCHomepageIndex,DataRequestMacro.kClass);
 5         JSONObject routeStr = new JSONObject(routeDict);
 6 
 7         Map dataDict = new HashMap();
 8         dataDict.put(DataRequestMacro.kHomepageCity, "北京");
 9         JSONObject  dataStr = new JSONObject(dataDict);
10         
11         NetUtil.post_request_Json(DataRequestMacro.kTagHomePageRoll, this, DataRequestMacro.kRequestUrlstr, NetUtil.params_route_data(routeDict, dataDict), this);
12 
13 請求完數據回調。。。。
14 @Override
15     public void request_back_result(RequestResultModel model){
16         System.out.println("回調~~~~~~~~~~~~~~~~~~"+model.requestTag+model.resultCode);
17     }

開發IOS的剛開發Android 有什麼不對的,你有什麼更好的call me。一同進步。。謝謝post

相關文章
相關標籤/搜索