將 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