package com.dpt.tbase.app.net; import java.io.File; import org.json.JSONObject; import android.content.Context; import android.text.TextUtils; import android.widget.ImageView; import com.android.volley.Request; import com.android.volley.Request.Method; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.StringRequest; import com.dpt.tbase.app.application.TBaseApplication; import com.dpt.tbase.app.base.exception.NetNotConnException; import com.dpt.tbase.app.base.utils.LogHelper; import com.dpt.tbase.app.base.utils.NetWorkUtil; import com.dpt.tbase.app.net.interfaces.INetBaseClientCallBack; import com.dpt.tbase.app.net.interfaces.INetJsonClientCallBack; import com.dpt.tbase.app.net.interfaces.INetStrClientCallBack; /** * * @author dupengtao@cyou-inc.com * 2014-4-10 * @Deprecated use {@link TBaseNetClent2} */ @Deprecated public class TBaseNetClent { private static String TAG = TBaseNetClent.class.getSimpleName(); public static final int TYPE_TREADER_JSON = 1; public static final int TYPE_STRING = 2; public static final int TYPE_JSON = 3; /** * post or custom request */ public static void executeRequest(Request<?> request) { executeRequest(true, null, request); } public static void executeRequest(boolean isShouldCache, String resTag ,Request<?> request) { addQueue(isShouldCache, resTag, request); } public static void executeRequest(Context context, String url, int type, INetBaseClientCallBack callBack) { executeRequest(context, url, type, true, null, callBack); } public static void executeRequest(Context context, String url, int type, boolean isShouldCache, String resTag, INetBaseClientCallBack callBack) { check(context, url, callBack); Request<?> request ; if (TYPE_STRING == type) { INetStrClientCallBack strClientCallBack = (INetStrClientCallBack) callBack; request = getTBaseStringRequest(context, url, strClientCallBack); } else if (TYPE_JSON == type) { INetJsonClientCallBack jsonClientCallBack = (INetJsonClientCallBack) callBack; request = getJsonRequest(context, url, jsonClientCallBack); } else {// shoud use executeRequest(Request<?> request) INetJsonClientCallBack jsonClientCallBack = (INetJsonClientCallBack) callBack; request = getTReaderJsonRequest(context, url, jsonClientCallBack); } addQueue(isShouldCache, resTag, request); } public static void addQueue(boolean isShouldCache, String resTag, Request<?> request) { if (!isShouldCache) { request.setShouldCache(false); } if (TextUtils.isEmpty(resTag)) { TBaseApplication.getInstance().addToRequestQueue(request); } else { TBaseApplication.getInstance().addToRequestQueue(request, resTag); } } public static void check(Context context, String url, INetBaseClientCallBack callBack) { if (!NetWorkUtil.checkNetWork(context)) { LogHelper.e(TAG, "unable to connect to the network !"); callBack.onFinishCallBack(); throw new NetNotConnException("net not connected"); } if (TextUtils.isEmpty(url)) { LogHelper.e(TAG, "url is null or empty !"); throw new NullPointerException("url is null or empty !"); } if (callBack == null) { LogHelper.e(TAG, "callback not find !"); throw new NullPointerException("callback not find !"); } } private static JsonObjectRequest getJsonRequest( final Context context, String url, final INetJsonClientCallBack callBack) { callBack.onStartCallBack(); JsonObjectRequest request = new JsonObjectRequest(Method.GET, url, null, new Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { callBack.onSuccessCallBack(response); callBack.onFinishCallBack(); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { processError(context, callBack, error); } }); return request; } private static TBaseJsonObjectRequest getTReaderJsonRequest( final Context context, String url, final INetJsonClientCallBack callBack) { callBack.onStartCallBack(); TBaseJsonObjectRequest request = new TBaseJsonObjectRequest(Method.GET, url, null, new Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { callBack.onSuccessCallBack(response); callBack.onFinishCallBack(); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { processError(context, callBack, error); } }); return request; } private static StringRequest getTBaseStringRequest(final Context context, String url, final INetStrClientCallBack callBack) { callBack.onStartCallBack(); StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { @Override public void onResponse(String response) { callBack.onSuccessCallBack(200, response.toString(), null); callBack.onFinishCallBack(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { processError(context, callBack, error); } }); return stringRequest; } private static void processError(final Context context, final INetBaseClientCallBack callBack, VolleyError error) { String message = ""; try { message = VolleyErrorHelper.getMessage(error, context); message += "statusCode" + error.networkResponse.statusCode; LogHelper.e(TAG, message); } catch (Exception e) { e.printStackTrace(); } finally { callBack.onFailureCallBack(error, message); callBack.onFinishCallBack(); } } public static void executeImageRequest(String requestUrl, ImageView imageView, int roadingResId, int errorResId) { TBaseApplication.getInstance().getImageLoader().get(requestUrl, ImageLoader.getImageListener( imageView, roadingResId, errorResId)); } public static void cacheRemove(String url){ TBaseApplication.getInstance().getRequestQueue().getCache().remove(url); } public static void cacheClear(){ TBaseApplication.getInstance().getRequestQueue().getCache().clear(); } public static void cancelSingleRequest(String reqTag){ TBaseApplication.getInstance().getRequestQueue().cancelAll(reqTag); } public static void cancelAllRequests(){ TBaseApplication.getInstance().getRequestQueue().cancelAll(new RequestQueue.RequestFilter() { @Override public boolean apply(Request<?> request) { return true; } }); } public static long getCacheSize(Context context){ File cacheDir = new File(context.getCacheDir(), "volley"); return cacheDir.length(); } }