package com.edufound.reader.util; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Environment; import com.edufound.reader.bean.HttpResultBean; import com.edufound.reader.receiver.ShowFollowReceiver; import com.edufound.reader.receiver.ShowPageLoadingReceiver; import com.google.gson.reflect.TypeToken; import com.okhttplib.HttpInfo; import com.okhttplib.OkHttpUtil; import com.okhttplib.annotation.CacheType; import com.okhttplib.annotation.Encoding; import com.okhttplib.callback.BaseCallback; import com.okhttplib.callback.Callback; import com.okhttplib.callback.ProgressCallback; import com.okhttplib.cookie.PersistentCookieJar; import com.okhttplib.cookie.cache.SetCookieCache; import com.okhttplib.cookie.persistence.SharedPrefsCookiePersistor; import com.orhanobut.logger.Logger; import java.io.File; import java.io.IOException; public class OkHttpClient { //初始化OKHTTP private static String downloadFileDir = Environment.getExternalStorageDirectory().getPath() + "/okHttp_download/"; private static String cacheDir = Environment.getExternalStorageDirectory().getPath() + "/okHttp_cache"; public static void initOkHttpUtil(Context context) { OkHttpUtil.init(context) .setConnectTimeout(10)//连接超时时间 .setWriteTimeout(15)//写超时时间 .setReadTimeout(15)//读超时时间 .setMaxCacheSize(10 * 1024 * 1024)//缓存空间大小 .setCacheType(CacheType.FORCE_NETWORK)//缓存类型 .setHttpLogTAG("HttpLog")//设置请求日志标识 .setIsGzip(false)//Gzip压缩,需要服务端支持 .setShowHttpLog(true)//显示请求日志 .setShowLifecycleLog(false)//显示Activity销毁日志 .setRetryOnConnectionFailure(false)//失败后不自动重连 .setCachedDir(new File(cacheDir))//设置缓存目录 .setDownloadFileDir(downloadFileDir)//文件下载保存目录 .setResponseEncoding(Encoding.UTF_8)//设置全局的服务器响应编码 .setRequestEncoding(Encoding.UTF_8)//设置全局的请求参数编码 // .setHttpsCertificate("12306.cer")//设置全局Https证书 .addResultInterceptor(HttpInterceptor.ResultInterceptor)//请求结果拦截器 .addExceptionInterceptor(HttpInterceptor.ExceptionInterceptor)//请求链路异常拦截器 .setCookieJar(new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context)))//持久化cookie .build(); } public static void doGetAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) { if (!info.build().getUrl().contains("posts/list") && !info.build().getUrl().contains("/userRead/check")) { Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW); Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent); } OkHttpUtil.getDefault(activity).doGetAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback)); } public static void doPostAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) { Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW); Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent); OkHttpUtil.getDefault(activity).doPostAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback)); } public static void doPostAsync(HttpInfo.Builder info, BaseCallback callback) { if (!info.build().getUrl().contains("playLog")) { Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW); Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent); } OkHttpUtil.getDefault().doPostAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback)); } public static void doPutAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) { Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW); Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent); OkHttpUtil.getDefault(activity).doPutAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback)); } public static void doDeleteAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) { Intent intent = new Intent(ShowPageLoadingReceiver.PAGE_LOADING_SHOW); Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent); OkHttpUtil.getDefault(activity).doDeleteAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback)); } public static void doUploadFile(Activity activity, HttpInfo.Builder info) { OkHttpUtil.getDefault(activity).doUploadFileAsync(info.addHead("uid", Consts.getUID()).build()); } }