OkHttpClient.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.edufound.reader.util;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.os.Environment;
  6. import com.edufound.reader.bean.HttpResultBean;
  7. import com.edufound.reader.receiver.ShowFollowReceiver;
  8. import com.google.gson.reflect.TypeToken;
  9. import com.okhttplib.HttpInfo;
  10. import com.okhttplib.OkHttpUtil;
  11. import com.okhttplib.annotation.CacheType;
  12. import com.okhttplib.annotation.Encoding;
  13. import com.okhttplib.callback.BaseCallback;
  14. import com.okhttplib.callback.Callback;
  15. import com.okhttplib.callback.ProgressCallback;
  16. import com.okhttplib.cookie.PersistentCookieJar;
  17. import com.okhttplib.cookie.cache.SetCookieCache;
  18. import com.okhttplib.cookie.persistence.SharedPrefsCookiePersistor;
  19. import com.orhanobut.logger.Logger;
  20. import java.io.File;
  21. import java.io.IOException;
  22. public class OkHttpClient {
  23. //初始化OKHTTP
  24. private static String downloadFileDir = Environment.getExternalStorageDirectory().getPath() + "/okHttp_download/";
  25. private static String cacheDir = Environment.getExternalStorageDirectory().getPath() + "/okHttp_cache";
  26. public static void initOkHttpUtil(Context context) {
  27. OkHttpUtil.init(context)
  28. .setConnectTimeout(10)//连接超时时间
  29. .setWriteTimeout(15)//写超时时间
  30. .setReadTimeout(15)//读超时时间
  31. .setMaxCacheSize(10 * 1024 * 1024)//缓存空间大小
  32. .setCacheType(CacheType.FORCE_NETWORK)//缓存类型
  33. .setHttpLogTAG("HttpLog")//设置请求日志标识
  34. .setIsGzip(false)//Gzip压缩,需要服务端支持
  35. .setShowHttpLog(true)//显示请求日志
  36. .setShowLifecycleLog(false)//显示Activity销毁日志
  37. .setRetryOnConnectionFailure(false)//失败后不自动重连
  38. .setCachedDir(new File(cacheDir))//设置缓存目录
  39. .setDownloadFileDir(downloadFileDir)//文件下载保存目录
  40. .setResponseEncoding(Encoding.UTF_8)//设置全局的服务器响应编码
  41. .setRequestEncoding(Encoding.UTF_8)//设置全局的请求参数编码
  42. // .setHttpsCertificate("12306.cer")//设置全局Https证书
  43. .addResultInterceptor(HttpInterceptor.ResultInterceptor)//请求结果拦截器
  44. .addExceptionInterceptor(HttpInterceptor.ExceptionInterceptor)//请求链路异常拦截器
  45. .setCookieJar(new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context)))//持久化cookie
  46. .build();
  47. }
  48. public static void doGetAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) {
  49. Logger.e("postUid:" + Consts.getUID());
  50. OkHttpUtil.getDefault(activity).doGetAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback));
  51. }
  52. public static void doPostAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) {
  53. Logger.e("postUid:" + Consts.getUID());
  54. OkHttpUtil.getDefault(activity).doPostAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback));
  55. }
  56. public static void doPostAsync(HttpInfo.Builder info, BaseCallback callback) {
  57. OkHttpUtil.getDefault().doPostAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback));
  58. }
  59. public static void doPutAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) {
  60. Logger.e("postUid:" + Consts.getUID());
  61. OkHttpUtil.getDefault(activity).doPutAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback));
  62. }
  63. public static void doDeleteAsync(Activity activity, HttpInfo.Builder info, BaseCallback callback) {
  64. Logger.e("postUid:" + Consts.getUID());
  65. OkHttpUtil.getDefault(activity).doDeleteAsync(info.addHead("uid", Consts.getUID()).build(), new EfunboxCallBack(callback));
  66. }
  67. public static void doUploadFile(Activity activity, HttpInfo.Builder info) {
  68. Logger.e("postUid:" + Consts.getUID());
  69. OkHttpUtil.getDefault(activity).doUploadFileAsync(info.addHead("uid", Consts.getUID()).build());
  70. }
  71. }
  72. class EfunboxCallBack implements Callback {
  73. Callback mCallBack;
  74. public EfunboxCallBack(BaseCallback callback) {
  75. mCallBack = (Callback) callback;
  76. }
  77. @Override
  78. public void onSuccess(HttpInfo info) throws IOException {
  79. HttpResultBean<Object> bean = info.getRetDetail(new TypeToken<HttpResultBean<Object>>() {
  80. }.getType());
  81. if (bean.getCount() != null && !bean.getCount().equals("")) {
  82. if (Integer.valueOf(bean.getCount()) > 0) {
  83. //显示小红花
  84. Logger.e("显示小红花");
  85. Intent intent = new Intent(ShowFollowReceiver.SHOW_FOLLOW);
  86. intent.putExtra("follow_count", bean.getCount());
  87. Consts.getmApplicAtion().getApplicationContext().sendBroadcast(intent);
  88. }
  89. }
  90. mCallBack.onSuccess(info);
  91. }
  92. @Override
  93. public void onFailure(HttpInfo info) throws IOException {
  94. mCallBack.onFailure(info);
  95. }
  96. }