package com.efunbox.base.util; import android.app.Activity; import android.content.Context; import android.os.Environment; import androidx.annotation.Nullable; import com.efunbox.base.callback.OkHttpCallback; 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.cookie.PersistentCookieJar; import com.okhttplib.cookie.cache.SetCookieCache; import com.okhttplib.cookie.persistence.SharedPrefsCookiePersistor; import java.io.File; import java.util.HashMap; import java.util.Map; public class OkHttpClient { //初始化OKHTTP private static String downloadFileDir = Environment.getExternalStorageDirectory().getPath() + "/okHttp_download/"; private static String cacheDir = Environment.getExternalStorageDirectory().getPath() + "/okHttp_cache"; private static Map mHeaders; public static void initOkHttpUtil(Context context) { OkHttpUtil.init(context) .setConnectTimeout(10)//连接超时时间 .setWriteTimeout(300)//写超时时间 .setReadTimeout(300)//读超时时间 .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(); refHeader(); } private static void refHeader() { if (mHeaders == null) { mHeaders = new HashMap<>(); } mHeaders.clear(); // mHeaders.put("uid", Consts.getUID()); // mHeaders.put("channelCode", Consts.getUmengChannel()); } public static void doGetAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) { if (!info.build().getUrl().contains("posts/list") && !info.build().getUrl().contains("/userRead/check") && !info.build().getUrl().contains("/order/info/")) { } refHeader(); OkHttpUtil.getDefault(activity).doGetAsync(info.addHeads(mHeaders).build(), new OkHttpCallback(callback)); } public static void doGetAsync(HttpInfo.Builder info, BaseCallback callback) { if (!info.build().getUrl().contains("posts/list") && !info.build().getUrl().contains("/userRead/check") && !info.build().getUrl().contains("/order/info/")) { } refHeader(); OkHttpUtil.getDefault().doGetAsync(info.addHeads(mHeaders).build(), new OkHttpCallback(callback)); } public static void doPostAsync(@Nullable Activity activity, HttpInfo.Builder info, BaseCallback callback) { refHeader(); OkHttpUtil.getDefault(activity).doPostAsync(info.addHeads(mHeaders).build(), new OkHttpCallback(callback)); } public static void doPostAsync(HttpInfo.Builder info, BaseCallback callback) { refHeader(); OkHttpUtil.getDefault().doPostAsync(info.addHeads(mHeaders).build(), new OkHttpCallback(callback)); } public static void doPutAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) { OkHttpUtil.getDefault(activity).doPutAsync(info.addHeads(mHeaders).build(), new OkHttpCallback(callback)); } public static void doDeleteAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) { OkHttpUtil.getDefault(activity).doDeleteAsync(info.addHeads(mHeaders).build(), new OkHttpCallback(callback)); } public static void doUploadFile(Activity activity, HttpInfo.Builder info) { refHeader(); OkHttpUtil.getDefault(activity).doUploadFileAsync(info.addHeads(mHeaders).build()); } }