// Path: chh/src/main/java/com/fei_ke/chiphellclient/ChhApplication.java
// public class ChhApplication extends Application {
//     private static ChhApplication instance;
//     private String formHash;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         instance = this;
// 
//         LogMessage.setDebug(BuildConfig.DEBUG);
// 
//         initImageLoader();
// 
//         setupUpdate();
//     }
// 
//     private void setupUpdate() {
//         UmengUpdateAgent.setUpdateAutoPopup(false);
//         UmengUpdateAgent.setUpdateOnlyWifi(false);
//     }
// 
// 
//     public String getFormHash() {
//         return formHash;
//     }
// 
//     public void setFormHash(String formHash) {
//         this.formHash = formHash;
//     }
// 
//     // 初始化ImageLoader
//     private void initImageLoader() {
//         DisplayImageOptions defaultDisplayImageOptions = new DisplayImageOptions.Builder()
//                 .cacheInMemory(true)
//                 .cacheOnDisk(true)
//                 .showImageForEmptyUri(R.drawable.logo)
//                 .showImageOnFail(R.drawable.logo)
//                 .showImageOnLoading(R.drawable.logo)
//                 // .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
//                 .build();
// 
//         OkHttpClient client = new OkHttpClient.Builder()
//                 .connectTimeout(10, TimeUnit.SECONDS)
//                 .readTimeout(40, TimeUnit.SECONDS)
//                 .cookieJar(new JavaNetCookieJar(WebViewCookieHandler.getInstance()))
//                 .build();
//         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
//                 .denyCacheImageMultipleSizesInMemory()
//                 .defaultDisplayImageOptions(defaultDisplayImageOptions)
//                 .imageDownloader(new OkHttpImageDownloader(this, client))
//                 .build();
//         // Initialize ImageLoader with configuration.
//         ImageLoader.getInstance().init(config);
// 
//     }
// 
//     static class OkHttpImageDownloader extends BaseImageDownloader {
// 
// 
//         private OkHttpClient client;
// 
// 
//         public OkHttpImageDownloader(Context context, OkHttpClient client) {
//             super(context);
//             this.client = client;
//         }
// 
// 
//         @Override
//         protected InputStream getStreamFromNetwork(String imageUri, Object extra) throws IOException {
//             Request request = new Request.Builder().url(imageUri).build();
//             ResponseBody responseBody = client.newCall(request).execute().body();
//             InputStream inputStream = responseBody.byteStream();
//             int contentLength = (int) responseBody.contentLength();
//             return new ContentLengthInputStream(inputStream, contentLength);
//         }
//     }
// 
//     public static ChhApplication getInstance() {
//         return instance;
//     }
// 
//     /**
//      * 是否登录
//      *
//      * @return
//      */
//     public boolean isLogin() {
//         return !TextUtils.isEmpty(formHash);
//     }
// 
// 
// }
// 
// Path: chh/src/main/java/com/fei_ke/chiphellclient/utils/LogMessage.java
// public class LogMessage {
// 
//     // 是否打印日志
//     private static boolean isDebug = true;
//     // 日志标签
//     public static String LOG_TAG = "frame";
// 
//     public static void v(String tag, Object msg) {
//         if (isDebug) {
//             Log.v(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void i(String tag, Object msg) {
//         if (isDebug) {
//             Log.i(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void d(String tag, Object msg) {
//         if (isDebug) {
//             Log.d(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void w(String tag, Object msg) {
//         if (isDebug) {
//             Log.w(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void e(String tag, Object msg) {
//         if (isDebug) {
//             Log.e(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void print(String tag, String msg) {
//         // System.out.println("tag=="+msg);
//     }
// 
//     /**
//      * 设置debug 模式
//      * 
//      * @param isDebug true 打印日志 false：不打印
//      */
// 
//     public static void setDebug(boolean isDebug) {
//         LogMessage.isDebug = isDebug;
//     }
// 
//     public static boolean isDebug(){
//         return isDebug;
//     }
// 
// }


import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import com.android.volley.AuthFailureError;
import com.android.volley.Cache;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;
import com.fei_ke.chiphellclient.BuildConfig;
import com.fei_ke.chiphellclient.ChhApplication;
import com.fei_ke.chiphellclient.utils.LogMessage;
import com.umeng.analytics.MobclickAgent;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.util.concurrent.atomic.AtomicBoolean;
        return cacheEntry;
    }

    @Override
    public Request<?> setRequestQueue(RequestQueue requestQueue) {
        onStart();
        return super.setRequestQueue(requestQueue);
    }

    @Override
    protected void deliverResponse(T response) {
        if (shouldCache() && isResponseFromCache.get()) {
            onCache(response);
        } else {
            onSuccess(response);
        }
    }

    @Override
    public void cancel() {
        super.cancel();
        onCancel();
    }

    @Override
    public void deliverError(VolleyError error) {
        onFailure(error, error.getMessage());
    }

    protected void onStart() {
// Path: chh/src/main/java/com/fei_ke/chiphellclient/ChhApplication.java
// public class ChhApplication extends Application {
//     private static ChhApplication instance;
//     private String formHash;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
// 
//         instance = this;
// 
//         LogMessage.setDebug(BuildConfig.DEBUG);
// 
//         initImageLoader();
// 
//         setupUpdate();
//     }
// 
//     private void setupUpdate() {
//         UmengUpdateAgent.setUpdateAutoPopup(false);
//         UmengUpdateAgent.setUpdateOnlyWifi(false);
//     }
// 
// 
//     public String getFormHash() {
//         return formHash;
//     }
// 
//     public void setFormHash(String formHash) {
//         this.formHash = formHash;
//     }
// 
//     // 初始化ImageLoader
//     private void initImageLoader() {
//         DisplayImageOptions defaultDisplayImageOptions = new DisplayImageOptions.Builder()
//                 .cacheInMemory(true)
//                 .cacheOnDisk(true)
//                 .showImageForEmptyUri(R.drawable.logo)
//                 .showImageOnFail(R.drawable.logo)
//                 .showImageOnLoading(R.drawable.logo)
//                 // .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
//                 .build();
// 
//         OkHttpClient client = new OkHttpClient.Builder()
//                 .connectTimeout(10, TimeUnit.SECONDS)
//                 .readTimeout(40, TimeUnit.SECONDS)
//                 .cookieJar(new JavaNetCookieJar(WebViewCookieHandler.getInstance()))
//                 .build();
//         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
//                 .denyCacheImageMultipleSizesInMemory()
//                 .defaultDisplayImageOptions(defaultDisplayImageOptions)
//                 .imageDownloader(new OkHttpImageDownloader(this, client))
//                 .build();
//         // Initialize ImageLoader with configuration.
//         ImageLoader.getInstance().init(config);
// 
//     }
// 
//     static class OkHttpImageDownloader extends BaseImageDownloader {
// 
// 
//         private OkHttpClient client;
// 
// 
//         public OkHttpImageDownloader(Context context, OkHttpClient client) {
//             super(context);
//             this.client = client;
//         }
// 
// 
//         @Override
//         protected InputStream getStreamFromNetwork(String imageUri, Object extra) throws IOException {
//             Request request = new Request.Builder().url(imageUri).build();
//             ResponseBody responseBody = client.newCall(request).execute().body();
//             InputStream inputStream = responseBody.byteStream();
//             int contentLength = (int) responseBody.contentLength();
//             return new ContentLengthInputStream(inputStream, contentLength);
//         }
//     }
// 
//     public static ChhApplication getInstance() {
//         return instance;
//     }
// 
//     /**
//      * 是否登录
//      *
//      * @return
//      */
//     public boolean isLogin() {
//         return !TextUtils.isEmpty(formHash);
//     }
// 
// 
// }
// 
// Path: chh/src/main/java/com/fei_ke/chiphellclient/utils/LogMessage.java
// public class LogMessage {
// 
//     // 是否打印日志
//     private static boolean isDebug = true;
//     // 日志标签
//     public static String LOG_TAG = "frame";
// 
//     public static void v(String tag, Object msg) {
//         if (isDebug) {
//             Log.v(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void i(String tag, Object msg) {
//         if (isDebug) {
//             Log.i(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void d(String tag, Object msg) {
//         if (isDebug) {
//             Log.d(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void w(String tag, Object msg) {
//         if (isDebug) {
//             Log.w(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void e(String tag, Object msg) {
//         if (isDebug) {
//             Log.e(tag, msg != null ? msg.toString() : "null");
//         }
//     }
// 
//     public static void print(String tag, String msg) {
//         // System.out.println("tag=="+msg);
//     }
// 
//     /**
//      * 设置debug 模式
//      * 
//      * @param isDebug true 打印日志 false：不打印
//      */
// 
//     public static void setDebug(boolean isDebug) {
//         LogMessage.isDebug = isDebug;
//     }
// 
//     public static boolean isDebug(){
//         return isDebug;
//     }
// 
// }


// Path: chh/src/main/java/com/fei_ke/chiphellclient/api/support/ApiRequest.java
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import com.android.volley.AuthFailureError;
import com.android.volley.Cache;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;
import com.fei_ke.chiphellclient.BuildConfig;
import com.fei_ke.chiphellclient.ChhApplication;
import com.fei_ke.chiphellclient.utils.LogMessage;
import com.umeng.analytics.MobclickAgent;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.UnsupportedEncodingException;
import java.util.concurrent.atomic.AtomicBoolean;

        return cacheEntry;
    }

    @Override
    public Request<?> setRequestQueue(RequestQueue requestQueue) {
        onStart();
        return super.setRequestQueue(requestQueue);
    }

    @Override
    protected void deliverResponse(T response) {
        if (shouldCache() && isResponseFromCache.get()) {
            onCache(response);
        } else {
            onSuccess(response);
        }
    }

    @Override
    public void cancel() {
        super.cancel();
        onCancel();
    }

    @Override
    public void deliverError(VolleyError error) {
        onFailure(error, error.getMessage());
    }

    protected void onStart() {
        if (LogMessage.isDebug()) {