Selaa lähdekoodia

重构请求方法,优化请求方法

yanyi 5 vuotta sitten
vanhempi
commit
f0a5f581e5
47 muutettua tiedostoa jossa 1339 lisäystä ja 1749 poistoa
  1. 4 4
      app/build.gradle
  2. 2 2
      app/src/main/java/com/mylove/okhttp/AppContext.java
  3. 4 4
      app/src/main/java/com/mylove/okhttp/DownloadActivity.java
  4. 7 25
      app/src/main/java/com/mylove/okhttp/MainActivity.java
  5. 1 1
      okhttplib/bintrayUpload.gradle
  6. 5 5
      okhttplib/build.gradle
  7. 0 51
      okhttplib/src/main/java/com/benyanyi/okhttp/AutoIsRequest.java
  8. 0 55
      okhttplib/src/main/java/com/benyanyi/okhttp/AutoRequest.java
  9. 0 29
      okhttplib/src/main/java/com/benyanyi/okhttp/Cache.java
  10. 0 27
      okhttplib/src/main/java/com/benyanyi/okhttp/CacheInterceptor.java
  11. 0 37
      okhttplib/src/main/java/com/benyanyi/okhttp/LogHelper.java
  12. 0 210
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequest.java
  13. 0 235
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequests.java
  14. 0 374
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequest.java
  15. 0 400
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequests.java
  16. 0 24
      okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpInfo.java
  17. 13 33
      okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpUtil.java
  18. 0 28
      okhttplib/src/main/java/com/benyanyi/okhttp/RequestType.java
  19. 0 29
      okhttplib/src/main/java/com/benyanyi/okhttp/TrustAllCerts.java
  20. 0 46
      okhttplib/src/main/java/com/benyanyi/okhttp/XmlRequest.java
  21. 228 0
      okhttplib/src/main/java/com/benyanyi/okhttp/call/BeanCall.java
  22. 78 0
      okhttplib/src/main/java/com/benyanyi/okhttp/call/CallBuilder.java
  23. 102 0
      okhttplib/src/main/java/com/benyanyi/okhttp/call/HttpCall.java
  24. 238 0
      okhttplib/src/main/java/com/benyanyi/okhttp/call/ListCall.java
  25. 184 0
      okhttplib/src/main/java/com/benyanyi/okhttp/call/ObjectCall.java
  26. 28 0
      okhttplib/src/main/java/com/benyanyi/okhttp/call/RequestConfig.java
  27. 57 0
      okhttplib/src/main/java/com/benyanyi/okhttp/config/CacheInterceptor.java
  28. 2 2
      okhttplib/src/main/java/com/benyanyi/okhttp/config/CallType.java
  29. 35 0
      okhttplib/src/main/java/com/benyanyi/okhttp/config/Client.java
  30. 51 0
      okhttplib/src/main/java/com/benyanyi/okhttp/config/HttpConfig.java
  31. 4 4
      okhttplib/src/main/java/com/benyanyi/okhttp/config/SslConfig.java
  32. 2 2
      okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/DownloadBean.java
  33. 26 34
      okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/DownloadObservable.java
  34. 5 4
      okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/DownloadRequest.java
  35. 3 1
      okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/FileUtil.java
  36. 2 0
      okhttplib/src/main/java/com/benyanyi/okhttp/download/FileUtil.java
  37. 0 37
      okhttplib/src/main/java/com/benyanyi/okhttp/download/FormatUtil.java
  38. 0 18
      okhttplib/src/main/java/com/benyanyi/okhttp/listener/OnOkHttpCallBack.java
  39. 165 0
      okhttplib/src/main/java/com/benyanyi/okhttp/type/CallType.java
  40. 27 0
      okhttplib/src/main/java/com/benyanyi/okhttp/type/RequestType.java
  41. 5 5
      okhttplib/src/main/java/com/benyanyi/okhttp/util/CacheUtils.java
  42. 5 5
      okhttplib/src/main/java/com/benyanyi/okhttp/util/FormatUtil.java
  43. 3 3
      okhttplib/src/main/java/com/benyanyi/okhttp/util/Internet.java
  44. 6 6
      okhttplib/src/main/java/com/benyanyi/okhttp/util/InternetBean.java
  45. 8 8
      okhttplib/src/main/java/com/benyanyi/okhttp/util/InternetUtil.java
  46. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/util/Md5keyUtil.java
  47. 38 0
      okhttplib/src/main/java/com/benyanyi/okhttp/util/OkHttpLog.java

+ 4 - 4
app/build.gradle

@@ -34,8 +34,8 @@ dependencies {
     androidTestImplementation 'com.android.support.test:runner:1.0.2'
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
     implementation project(':okhttplib')
-    implementation 'com.yanyi.benyanyi:loglib:1.0.1'
-    implementation 'com.yanyi.benyanyi:permissionlib:1.0.2'
-    implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
-    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
+    implementation 'com.yanyi.benyanyi:loglib:1.0.3'
+    implementation 'com.yanyi.benyanyi:permissionlib:1.0.9'
+    implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
+    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
 }

+ 2 - 2
app/src/main/java/com/mylove/okhttp/AppContext.java

@@ -3,7 +3,7 @@ package com.mylove.okhttp;
 import android.app.Application;
 import android.content.Context;
 
-import com.mylove.loglib.JLog;
+import com.benyanyi.loglib.Jlog;
 
 /**
  * @author myLove
@@ -19,7 +19,7 @@ public class AppContext extends Application {
     @Override
     public void onCreate() {
         super.onCreate();
-        JLog.init(true);
+        Jlog.init(true);
         mContext = this;
     }
 }

+ 4 - 4
app/src/main/java/com/mylove/okhttp/DownloadActivity.java

@@ -8,10 +8,10 @@ import android.view.View;
 import android.widget.Button;
 import android.widget.ProgressBar;
 
+import com.benyanyi.loglib.Jlog;
 import com.benyanyi.okhttp.download.BaseDownLoadObserver;
 import com.benyanyi.okhttp.download.DownloadInfo;
 import com.benyanyi.okhttp.download.DownloadManager;
-import com.mylove.loglib.JLog;
 
 /**
  * @author BenYanYi
@@ -63,7 +63,7 @@ public class DownloadActivity extends AppCompatActivity implements View.OnClickL
                     @Override
                     public void onNext(DownloadInfo downloadInfo) {
                         super.onNext(downloadInfo);
-                        JLog.v(downloadInfo.getProgress());
+                        Jlog.v(downloadInfo.getProgress());
                         progress1.setMax((int) downloadInfo.getTotal());
                         progress1.setProgress((int) downloadInfo.getProgress());
                     }
@@ -78,7 +78,7 @@ public class DownloadActivity extends AppCompatActivity implements View.OnClickL
                 DownloadManager.getInstance(mContext).download(url2, new BaseDownLoadObserver() {
                     @Override
                     public void onNext(DownloadInfo downloadInfo) {
-                        JLog.v(downloadInfo.getProgress());
+                        Jlog.v(downloadInfo.getProgress());
                     }
 
                     @Override
@@ -96,7 +96,7 @@ public class DownloadActivity extends AppCompatActivity implements View.OnClickL
                 DownloadManager.getInstance(mContext).download(url3, new BaseDownLoadObserver() {
                     @Override
                     public void onNext(DownloadInfo downloadInfo) {
-                        JLog.v(downloadInfo.getProgress());
+                        Jlog.v(downloadInfo.getProgress());
                     }
 
                     @Override

+ 7 - 25
app/src/main/java/com/mylove/okhttp/MainActivity.java

@@ -1,16 +1,12 @@
 package com.mylove.okhttp;
 
-import android.content.Intent;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
 
-import com.benyanyi.okhttp.OkHttpInfo;
+import com.benyanyi.loglib.Jlog;
 import com.benyanyi.okhttp.OkHttpUtil;
 import com.benyanyi.okhttp.listener.OnOkHttpListener;
-import com.mylove.loglib.JLog;
-import com.yanyi.permissionlib.PermissionHelper;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -24,14 +20,13 @@ import java.util.Map;
  */
 
 public class MainActivity extends AppCompatActivity {
-    private PermissionHelper permissionHelper;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 //        setContentView(R.layout.notification_contentview);
         setContentView(R.layout.activity_main);
-
+        init();
 //        String[] strings = new String[]{PermissionType.STORAGE};
 //        permissionHelper = new PermissionHelper(this, strings);
 //        permissionHelper.hasPermission(new PermissionHelper.OnPermissionListener() {
@@ -49,7 +44,7 @@ public class MainActivity extends AppCompatActivity {
     }
 
     private void init() {
-        String url = "http://192.168.3.188/DTP/BPO_DTPInterfaceYYC.asmx/DTPInterfaceYYC";
+        String url = "http://www.yanyi.red/taihao/SimpleAlarm/update.json";
         Map<Object, Object> oMap = new HashMap<>();
         oMap.put("UserID", "110");
         oMap.put("TypeID", "1");
@@ -57,7 +52,7 @@ public class MainActivity extends AppCompatActivity {
         oMap.put("CodeID", "");
         oMap.put("Status", "");
         oMap.put("DataSet", "");
-        OkHttpUtil.getInstance(this).post(url).async(oMap, new OnOkHttpListener<Object>() {
+        OkHttpUtil.getInstance(this).url(url, true).postText(oMap).async(new OnOkHttpListener<Object>() {
             @Override
             public void onCompleted() {
 
@@ -65,19 +60,18 @@ public class MainActivity extends AppCompatActivity {
 
             @Override
             public void onSuccess(Object message) {
-                JLog.v(message);
+                Jlog.v(message);
             }
 
             @Override
             public void onFailure(Throwable t) {
-                JLog.e(t.getMessage());
+                Jlog.e(t.getMessage());
             }
         });
     }
 
     private void downloadAPK() {
-        OkHttpInfo.soapDataTopString = "";
-        JLog.init(true);
+//        JLog.init(true);
         String url = "http://www.yanyi.red/bluetooth/dectector/dectector.apk";
 //        String filePath = "/dectector/dfu/";
 ////        String filePath = Environment.getExternalStorageDirectory().toString() + "/dectector/dfu/";
@@ -99,16 +93,4 @@ public class MainActivity extends AppCompatActivity {
 //        });
     }
 
-    @Override
-    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
-                                           @NonNull int[] grantResults) {
-        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
-        permissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        permissionHelper.onActivityResult(requestCode, resultCode, data);
-    }
 }

+ 1 - 1
okhttplib/bintrayUpload.gradle

@@ -7,7 +7,7 @@ def siteUrl = 'http://www.yanyis.space/yanyi/baseokhttp' // 项目主页。
 def gitUrl = 'http://www.yanyis.space/yanyi/baseokhttp.git' // Git仓库的url。
 
 group = "com.yanyi.benyanyi"// 唯一包名,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的com.ansen.http就是这里配置的。
-version = "1.1.4" //项目引用的版本号,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的1.0.1就是这里配置的。
+version = "1.1.5" //项目引用的版本号,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的1.0.1就是这里配置的。
 install {
     repositories.mavenInstaller {
         // This generates POM.xml with proper parameters

+ 5 - 5
okhttplib/build.gradle

@@ -29,12 +29,12 @@ dependencies {
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'com.android.support.test:runner:1.0.2'
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
-    implementation 'com.squareup.okhttp3:okhttp:3.12.0'
+    implementation 'com.squareup.okhttp3:okhttp:4.0.0'
     //网络请求log 拦截器
-    implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
-    implementation 'com.squareup.okio:okio:1.15.0'
-    implementation 'io.reactivex.rxjava2:rxjava:2.2.4'
-    implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
+    implementation 'com.squareup.okhttp3:logging-interceptor:4.0.0'
+    implementation 'com.squareup.okio:okio:2.2.2'
+    implementation 'io.reactivex.rxjava2:rxjava:2.2.10'
+    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
     implementation 'com.google.code.gson:gson:2.8.5'
     implementation 'com.squareup.retrofit2:retrofit:2.5.0'
     api files('lib/android-xml-json.jar')

+ 0 - 51
okhttplib/src/main/java/com/benyanyi/okhttp/AutoIsRequest.java

@@ -1,51 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-
-import com.benyanyi.okhttp.listener.OnOkHttpCallBack;
-
-/**
- * @author myLove
- */
-
-public class AutoIsRequest {
-    @SuppressLint("StaticFieldLeak")
-    private static AutoIsRequest instance;
-    private static String url;
-    @SuppressLint("StaticFieldLeak")
-    private static Context mContext;
-
-    public static AutoIsRequest getInstance(Context context, String str) {
-        if (instance == null) {
-            synchronized (AutoIsRequest.class) {
-                if (instance == null) {
-                    instance = new AutoIsRequest();
-                }
-            }
-        }
-        mContext = context;
-        url = str;
-        return instance;
-    }
-
-    public void sync(OnOkHttpCallBack onOkHttpCallBack) {
-        ObservableIsRequest.getInstance(mContext, CallType.SYNC).request(url, onOkHttpCallBack);
-    }
-
-    public <T> void sync(Class<T> tClass, OnOkHttpCallBack onOkHttpCallBack) {
-        ObservableIsRequests request = ObservableIsRequests.getInstance(mContext, CallType.SYNC);
-        request.tClass = tClass;
-        request.request(url, onOkHttpCallBack);
-    }
-
-    public void async(OnOkHttpCallBack onOkHttpCallBack) {
-        ObservableIsRequest.getInstance(mContext, CallType.ASYNC).request(url, onOkHttpCallBack);
-    }
-
-    public <T> void async(Class<T> tClass, OnOkHttpCallBack onOkHttpCallBack) {
-        ObservableIsRequests request = ObservableIsRequests.getInstance(mContext, CallType.ASYNC);
-        request.tClass = tClass;
-        request.request(url, onOkHttpCallBack);
-    }
-}

+ 0 - 55
okhttplib/src/main/java/com/benyanyi/okhttp/AutoRequest.java

@@ -1,55 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-
-import com.benyanyi.okhttp.listener.OnOkHttpListener;
-
-import java.util.Map;
-
-/**
- * @author myLove
- */
-
-public class AutoRequest {
-    @SuppressLint("StaticFieldLeak")
-    private static AutoRequest instance;
-    private static String url;
-    @SuppressLint("StaticFieldLeak")
-    private static Context mContext;
-    private static RequestType requestType;
-
-    public static AutoRequest getInstance(Context context, String str, RequestType type) {
-        if (instance == null) {
-            synchronized (AutoRequest.class) {
-                if (instance == null) {
-                    instance = new AutoRequest();
-                }
-            }
-        }
-        mContext = context;
-        url = str;
-        requestType = type;
-        return instance;
-    }
-
-    public void sync(Map<Object, Object> oMap, OnOkHttpListener onOkHttpListener) {
-        ObservableRequest.getInstance(mContext, requestType, CallType.SYNC).request(url, oMap, onOkHttpListener);
-    }
-
-    public <T> void sync(Map<Object, Object> oMap, Class<T> tClass, OnOkHttpListener<T> onOkHttpListener) {
-        ObservableRequests request = ObservableRequests.getInstance(mContext, requestType, CallType.SYNC);
-        request.tClass = tClass;
-        request.request(url, oMap, onOkHttpListener);
-    }
-
-    public void async(Map<Object, Object> oMap, OnOkHttpListener onOkHttpListener) {
-        ObservableRequest.getInstance(mContext, requestType, CallType.ASYNC).request(url, oMap, onOkHttpListener);
-    }
-
-    public <T> void async(Map<Object, Object> oMap, Class<T> tClass, OnOkHttpListener<T> onOkHttpListener) {
-        ObservableRequests request = ObservableRequests.getInstance(mContext, requestType, CallType.ASYNC);
-        request.tClass = tClass;
-        request.request(url, oMap, onOkHttpListener);
-    }
-}

+ 0 - 29
okhttplib/src/main/java/com/benyanyi/okhttp/Cache.java

@@ -1,29 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-
-import okhttp3.logging.HttpLoggingInterceptor;
-
-/**
- * @author myLove
- */
-
-class Cache {
-    /**
-     * 设置缓存路径,以及缓存文件大小
-     */
-    static okhttp3.Cache privateCache(Context mContext) {
-        return new okhttp3.Cache(mContext.getCacheDir(), 1024 * 1024);
-    }
-
-    static HttpLoggingInterceptor HTTP_LOGGING_INTERCEPTOR =
-            new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
-                @Override
-                public void log(@NonNull String message) {
-                    if (OkHttpInfo.isLOG) {
-                        LogHelper.d( message);
-                    }
-                }
-            }).setLevel(HttpLoggingInterceptor.Level.BODY);
-}

+ 0 - 27
okhttplib/src/main/java/com/benyanyi/okhttp/CacheInterceptor.java

@@ -1,27 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.support.annotation.NonNull;
-
-import java.io.IOException;
-
-import okhttp3.Interceptor;
-import okhttp3.Request;
-import okhttp3.Response;
-
-/**
- * @author myLove
- */
-
- class CacheInterceptor implements Interceptor {
-    @NonNull
-    @Override
-    public Response intercept(Chain chain) throws IOException {
-        Request request = chain.request();
-        Response response = chain.proceed(request);
-        return response.newBuilder()
-                .removeHeader("Pragma")
-                .removeHeader("GlideCache-Control")
-                .header("GlideCache-Control", "max-age=" + 60)
-                .build();
-    }
-}

+ 0 - 37
okhttplib/src/main/java/com/benyanyi/okhttp/LogHelper.java

@@ -1,37 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.util.Log;
-
-
-/**
- * @author BenYanYi
- * @date 2018/9/12 15:27
- * @email ben@yanyi.red
- * @overview 打印日志
- */
-public class LogHelper {
-
-    public static void a(Object object) {
-        Log.wtf(OkHttpInfo.TAG, object.toString());
-    }
-
-    public static void e(Object object) {
-        Log.e(OkHttpInfo.TAG, object.toString());
-    }
-
-    public static void d(Object object) {
-        Log.d(OkHttpInfo.TAG, object.toString());
-    }
-
-    public static void i(Object object) {
-        Log.i(OkHttpInfo.TAG, object.toString());
-    }
-
-    public static void v(Object object) {
-        Log.v(OkHttpInfo.TAG, object.toString());
-    }
-
-    public static void w(Object object) {
-        Log.w(OkHttpInfo.TAG, object.toString());
-    }
-}

+ 0 - 210
okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequest.java

@@ -1,210 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import com.benyanyi.okhttp.listener.OnOkHttpCallBack;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-import okhttp3.Call;
-import okhttp3.Callback;
-import okhttp3.OkHttpClient;
-import okhttp3.Response;
-
-/**
- * @author myLove
- */
-
-class ObservableIsRequest {
-    @SuppressLint("StaticFieldLeak")
-    private static ObservableIsRequest instance;
-    @SuppressLint("StaticFieldLeak")
-    private static Context mContext;
-    private static CallType callType;
-
-    private static OkHttpClient okHttpClient;
-    private String mCacheUrl = "";
-
-    private OnOkHttpCallBack okHttpCallBack;
-
-    static ObservableIsRequest getInstance(Context context, CallType type2) {
-        if (instance == null) {
-            synchronized (ObservableIsRequest.class) {
-                if (instance == null) {
-                    instance = new ObservableIsRequest();
-                    OkHttpClient httpClient = new OkHttpClient();
-                    okHttpClient = httpClient.newBuilder()
-                            .addNetworkInterceptor(new CacheInterceptor())
-                            .addInterceptor(Cache.HTTP_LOGGING_INTERCEPTOR)
-                            .cache(Cache.privateCache(context))
-                            .connectTimeout(30, TimeUnit.SECONDS)
-                            .readTimeout(30, TimeUnit.SECONDS)
-                            .writeTimeout(30, TimeUnit.SECONDS)
-                            //支持HTTPS请求,跳过证书验证
-                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
-                            .build();
-                }
-            }
-        }
-        mContext = context;
-        callType = type2;
-        return instance;
-    }
-
-    void request(String url, OnOkHttpCallBack onOkHttpCallBack) {
-        this.okHttpCallBack = onOkHttpCallBack;
-        getObservable(url).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-                //保证上游下游同一线程 ,防止不同线程下 onError 通知会跳到(并吞掉)原始Observable发射的数据项前面的错误行为
-                .serialize()
-                .subscribe(new Observer<String>() {
-                    @Override
-                    public void onSubscribe(Disposable d) {
-
-                    }
-
-                    @Override
-                    public void onNext(String str) {
-                        okHttpCallBack.onSuccess(str);
-                    }
-
-                    @Override
-                    public void onError(Throwable e) {
-                        okHttpCallBack.onFailure(e);
-                    }
-
-                    @Override
-                    public void onComplete() {
-                        okHttpCallBack.onCompleted();
-                    }
-                });
-    }
-
-    private Observable<String> getObservable(final String url) {
-
-        return Observable.create(new ObservableOnSubscribe<String>() {
-            @Override
-            public void subscribe(ObservableEmitter<String> e) {
-                send(url, e);
-            }
-        });
-    }
-
-    private void send(String url, ObservableEmitter<String> subscriber) {
-        mCacheUrl = url;
-        InternetBean bean = Internet.ifInternet(mContext);
-        if (bean.getStatus()) {
-            Call call = okHttpClient.newCall(okHttpCallBack.setRequest(url));
-            sendCall(call, subscriber);
-        } else {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                subscriber.onNext(json);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(new Error(bean.getMsg()));
-                subscriber.onComplete();
-            }
-        }
-
-    }
-
-    /**
-     * 请求
-     */
-    private void sendCall(Call call, ObservableEmitter<String> subscriber) {
-        if (callType == CallType.SYNC) {
-            sync(call, subscriber);
-        } else if (callType == CallType.ASYNC) {
-            async(call, subscriber);
-        }
-    }
-
-    /**
-     * 同步请求
-     */
-    private void sync(Call call, ObservableEmitter<String> subscriber) {
-        try {
-            Response execute = call.execute();
-            if (execute.isSuccessful()) {
-                String str = execute.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                String html = "<!DOCTYPE HTML>";
-                if (!str.toUpperCase().contains(html)) {
-                    if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                        CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                    }
-                }
-                subscriber.onNext(str);
-                subscriber.onComplete();
-            } else {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    subscriber.onNext(json);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(new Exception("请求失败"));
-                    subscriber.onComplete();
-                }
-            }
-        } catch (IOException e) {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                subscriber.onNext(json);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(e);
-                subscriber.onComplete();
-            }
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 异步请求
-     */
-    private void async(Call call, final ObservableEmitter<String> subscriber) {
-        call.enqueue(new Callback() {
-            @Override
-            public void onFailure(@NonNull Call call, @NonNull IOException e) {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    subscriber.onNext(json);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(e);
-                    subscriber.onComplete();
-                }
-                e.printStackTrace();
-            }
-
-            @Override
-            public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
-                String str = response.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                String html = "<!DOCTYPE HTML>";
-                if (!str.toUpperCase().contains(html)) {
-                    if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                        CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                    }
-                }
-                subscriber.onNext(str);
-                subscriber.onComplete();
-            }
-        });
-    }
-}

+ 0 - 235
okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequests.java

@@ -1,235 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import com.benyanyi.okhttp.listener.OnOkHttpCallBack;
-import com.google.gson.Gson;
-
-import org.json.XML;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-import okhttp3.Call;
-import okhttp3.Callback;
-import okhttp3.OkHttpClient;
-import okhttp3.Response;
-
-/**
- * @author myLove
- */
-
-class ObservableIsRequests<T> {
-    @SuppressLint("StaticFieldLeak")
-    private static ObservableIsRequests instance;
-    @SuppressLint("StaticFieldLeak")
-    private static Context mContext;
-    private static CallType callType;
-
-    private static OkHttpClient okHttpClient;
-    private String mCacheUrl = "";
-
-    private OnOkHttpCallBack okHttpCallBack;
-
-    public Class<T> tClass;
-
-    static ObservableIsRequests getInstance(Context context, CallType type2) {
-        if (instance == null) {
-            synchronized (ObservableIsRequests.class) {
-                if (instance == null) {
-                    instance = new ObservableIsRequests();
-                    OkHttpClient httpClient = new OkHttpClient();
-                    okHttpClient = httpClient.newBuilder()
-                            .addNetworkInterceptor(new CacheInterceptor())
-                            .addInterceptor(Cache.HTTP_LOGGING_INTERCEPTOR)
-                            .cache(Cache.privateCache(context))
-                            .connectTimeout(30, TimeUnit.SECONDS)
-                            .readTimeout(30, TimeUnit.SECONDS)
-                            .writeTimeout(30, TimeUnit.SECONDS)
-                            //支持HTTPS请求,跳过证书验证
-                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
-                            .build();
-                }
-            }
-        }
-        mContext = context;
-        callType = type2;
-        return instance;
-    }
-
-    void request(String url, OnOkHttpCallBack onOkHttpCallBack) {
-        this.okHttpCallBack = onOkHttpCallBack;
-        getObservable(url).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-                .serialize().subscribe(new Observer<T>() {
-            @Override
-            public void onSubscribe(Disposable d) {
-
-            }
-
-            @Override
-            public void onNext(T t) {
-                okHttpCallBack.onSuccess(t);
-            }
-
-            @Override
-            public void onError(Throwable e) {
-                okHttpCallBack.onFailure(e);
-            }
-
-            @Override
-            public void onComplete() {
-                okHttpCallBack.onCompleted();
-            }
-        });
-    }
-
-    private Observable<T> getObservable(final String url) {
-        return Observable.create(new ObservableOnSubscribe<T>() {
-            @Override
-            public void subscribe(ObservableEmitter<T> e) {
-                send(url, e);
-            }
-        });
-    }
-
-    private void send(String url, ObservableEmitter<T> subscriber) {
-        mCacheUrl = url;
-        InternetBean bean = Internet.ifInternet(mContext);
-        if (bean.getStatus()) {
-            Call call = okHttpClient.newCall(okHttpCallBack.setRequest(url));
-            sendCall(call, subscriber);
-        } else {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                T t = new Gson().fromJson(json, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(new Error(bean.getMsg()));
-                subscriber.onComplete();
-            }
-        }
-    }
-
-    /**
-     * 请求
-     */
-    private void sendCall(Call call, ObservableEmitter<T> subscriber) {
-        if (callType == CallType.SYNC) {
-            sync(call, subscriber);
-        } else if (callType == CallType.ASYNC) {
-            async(call, subscriber);
-        }
-    }
-
-    /**
-     * 同步请求
-     */
-    private void sync(Call call, ObservableEmitter<T> subscriber) {
-        try {
-            Response execute = call.execute();
-            if (execute.isSuccessful()) {
-                String str = execute.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                boolean boo = ("<".equals(str.substring(0, 1)) || "[".equals(str.substring(0, 1)))
-                        && ("\"".equals(str.substring(1, 2)) || "[".equals(str.substring(1, 2)));
-                if (boo) {
-                    try {
-                        str = XML.toJSONObject(str).toString();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    String html = "<!DOCTYPE HTML>";
-                    if (!str.toUpperCase().contains(html)) {
-                        if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                            CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                        }
-                    }
-                }
-                T t = new Gson().fromJson(str, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            } else {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    T t = new Gson().fromJson(json, tClass);
-                    subscriber.onNext(t);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(new Exception("请求失败"));
-                    subscriber.onComplete();
-                }
-            }
-        } catch (IOException e) {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                T t = new Gson().fromJson(json, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(e);
-                subscriber.onComplete();
-            }
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 异步请求
-     */
-    private void async(Call call, final ObservableEmitter<T> subscriber) {
-        call.enqueue(new Callback() {
-            @Override
-            public void onFailure(@NonNull Call call, @NonNull IOException e) {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    T t = new Gson().fromJson(json, tClass);
-                    subscriber.onNext(t);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(e);
-                    subscriber.onComplete();
-                }
-                e.printStackTrace();
-            }
-
-            @Override
-            public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
-                String str = response.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                boolean boo = ("<".equals(str.substring(0, 1)) || "[".equals(str.substring(0, 1)))
-                        && ("\"".equals(str.substring(1, 2)) || "[".equals(str.substring(1, 2)));
-                if (boo) {
-                    try {
-                        str = XML.toJSONObject(str).toString();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    String html = "<!DOCTYPE HTML>";
-                    if (!str.toUpperCase().contains(html)) {
-                        if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                            CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                        }
-                    }
-                }
-                T t = new Gson().fromJson(str, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            }
-        });
-    }
-}

+ 0 - 374
okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequest.java

@@ -1,374 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import com.benyanyi.okhttp.listener.OnOkHttpListener;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-import okhttp3.Call;
-import okhttp3.Callback;
-import okhttp3.FormBody;
-import okhttp3.MediaType;
-import okhttp3.MultipartBody;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.RequestBody;
-import okhttp3.Response;
-
-/**
- * @author myLove
- */
-
-class ObservableRequest {
-    @SuppressLint("StaticFieldLeak")
-    private static ObservableRequest instance;
-    @SuppressLint("StaticFieldLeak")
-    private static Context mContext;
-    private static RequestType requestType;
-    private static CallType callType;
-
-    private static OkHttpClient okHttpClient;
-    private String mCacheUrl = "";
-
-    static ObservableRequest getInstance(Context context, RequestType type1, CallType type2) {
-        if (instance == null) {
-            synchronized (ObservableRequest.class) {
-                if (instance == null) {
-                    instance = new ObservableRequest();
-                    OkHttpClient httpClient = new OkHttpClient();
-                    okHttpClient = httpClient.newBuilder()
-                            .addNetworkInterceptor(new CacheInterceptor())
-                            .addInterceptor(Cache.HTTP_LOGGING_INTERCEPTOR)
-                            .cache(Cache.privateCache(context))
-                            .connectTimeout(30, TimeUnit.SECONDS)
-                            .readTimeout(30, TimeUnit.SECONDS)
-                            .writeTimeout(30, TimeUnit.SECONDS)
-                            //支持HTTPS请求,跳过证书验证
-                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
-                            .build();
-                }
-            }
-        }
-        mContext = context;
-        requestType = type1;
-        callType = type2;
-        return instance;
-    }
-
-    void request(String url, Map<Object, Object> oMap, final OnOkHttpListener onOkHttpListener) {
-        getObservable(url, oMap).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-                .serialize()//保证上游下游同一线程 ,防止不同线程下 onError 通知会跳到(并吞掉)原始Observable发射的数据项前面的错误行为
-                .subscribe(new Observer<String>() {
-                    @Override
-                    public void onSubscribe(Disposable d) {
-
-                    }
-
-                    @Override
-                    public void onNext(String str) {
-                        onOkHttpListener.onSuccess(str);
-                    }
-
-                    @Override
-                    public void onError(Throwable e) {
-                        onOkHttpListener.onFailure(e);
-                    }
-
-                    @Override
-                    public void onComplete() {
-                        onOkHttpListener.onCompleted();
-                    }
-                });
-    }
-
-    private Observable<String> getObservable(final String url, final Map<Object, Object> oMap) {
-
-        return Observable.create(new ObservableOnSubscribe<String>() {
-            @Override
-            public void subscribe(ObservableEmitter<String> e) {
-                send(url, oMap, e);
-            }
-        });
-    }
-
-    private void send(String url, Map<Object, Object> map, ObservableEmitter<String> subscriber) {
-        if (FormatUtil.isMapNotEmpty(map)) {
-            mCacheUrl = url + map.toString();
-        } else {
-            mCacheUrl = url;
-        }
-        InternetBean bean = Internet.ifInternet(mContext);
-        if (bean.getStatus()) {
-            Call call = okHttpClient.newCall(getRequest(url, map));
-            sendCall(call, subscriber);
-        } else {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                subscriber.onNext(json);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(new Error(bean.getMsg()));
-                subscriber.onComplete();
-            }
-        }
-
-    }
-
-    /**
-     * 请求
-     */
-    private void sendCall(Call call, ObservableEmitter<String> subscriber) {
-        if (callType == CallType.SYNC) {
-            sync(call, subscriber);
-        } else if (callType == CallType.ASYNC) {
-            async(call, subscriber);
-        }
-    }
-
-    /**
-     * 同步请求
-     */
-    private void sync(Call call, ObservableEmitter<String> subscriber) {
-        try {
-            Response execute = call.execute();
-            if (execute.isSuccessful()) {
-                String str = execute.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                String html = "<!DOCTYPE HTML>";
-                if (!str.toUpperCase().contains(html)) {
-                    if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                        CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                    }
-                }
-                subscriber.onNext(str);
-                subscriber.onComplete();
-            } else {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    subscriber.onNext(json);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(new Exception("请求失败"));
-                    subscriber.onComplete();
-                }
-            }
-        } catch (IOException e) {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                subscriber.onNext(json);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(e);
-                subscriber.onComplete();
-            }
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 异步请求
-     */
-    private void async(Call call, final ObservableEmitter<String> subscriber) {
-        call.enqueue(new Callback() {
-            @Override
-            public void onFailure(@NonNull Call call, @NonNull IOException e) {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    subscriber.onNext(json);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(e);
-                    subscriber.onComplete();
-                }
-                e.printStackTrace();
-            }
-
-            @Override
-            public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
-                String str = response.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                String html = "<!DOCTYPE HTML>";
-                if (!str.toUpperCase().contains(html)) {
-                    if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                        CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                    }
-                }
-                subscriber.onNext(str);
-                subscriber.onComplete();
-            }
-        });
-    }
-
-    /**
-     * 判断请求方式
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request getRequest(String url, Map<Object, Object> oMap) {
-        if (requestType == null) {
-            requestType = RequestType.POST;
-        }
-        switch (requestType) {
-            case POST_XML_SOAP:
-                return postXMLToSoap(url, oMap);
-            case UP_FILE:
-                return upFile(url, oMap);
-            case ALL:
-                return upAll(url, oMap);
-            case POST:
-                return post(url, oMap);
-            case GET:
-            default:
-                return get(url, oMap);
-        }
-    }
-
-    private Request postXMLToSoap(String url, Map<Object, Object> oMap) {
-        if (FormatUtil.isEmpty(OkHttpInfo.soapDataTopString)) {
-            throw new NullPointerException("OkHttpInfo.soapDataTopString不能为空");
-        }
-        if (FormatUtil.isEmpty(OkHttpInfo.soapDataBottomString)) {
-            throw new NullPointerException("OkHttpInfo.soapDataBottomString不能为空");
-        }
-        StringBuilder sb = new StringBuilder();
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                String key = entry.getKey().toString();
-                String value = entry.getValue().toString();
-                sb.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
-            }
-        }
-        MediaType mediaType = MediaType.parse(OkHttpInfo.soapMediaType);
-        String str = OkHttpInfo.soapDataTopString + sb + OkHttpInfo.soapDataBottomString;
-        if (OkHttpInfo.isLOG) {
-            Log.v(OkHttpInfo.TAG, str);
-        }
-        return new Request.Builder()
-                .url(url)
-                .post(RequestBody.create(mediaType, str))
-                .build();
-    }
-
-    /**
-     * 上传文件
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request upFile(String url, Map<Object, Object> oMap) {
-        MultipartBody.Builder builder = new MultipartBody.Builder()
-                .setType(MultipartBody.FORM);
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                File file = new File(entry.getValue().toString());
-                int indexOf = entry.getValue().toString().indexOf("/");
-                RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
-                String fileName = entry.getKey().toString().substring(indexOf + 1, entry.getKey().toString().length());
-                builder.addFormDataPart(entry.getKey().toString(), fileName, requestBody);
-            }
-        }
-        MultipartBody multipartBody = builder.build();
-        return new Request.Builder()
-                .url(url)
-                .post(multipartBody)
-                .build();
-    }
-
-    /**
-     * 参数和文件一起上传
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request upAll(String url, Map<Object, Object> oMap) {
-        MultipartBody.Builder builder = new MultipartBody.Builder()
-                .setType(MultipartBody.ALTERNATIVE);
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                int indexOf = entry.getValue().toString().lastIndexOf("/");
-                int indexOf1 = entry.getValue().toString().lastIndexOf(".");
-                if (indexOf > 0 && indexOf1 > 0) {
-                    File file = new File(entry.getValue().toString());
-                    RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
-                    String fileName = entry.getKey().toString().substring(indexOf + 1, entry.getKey().toString().length());
-                    builder.addFormDataPart(entry.getKey().toString(), fileName, requestBody);
-                } else {
-                    builder.addFormDataPart(entry.getKey().toString(), entry.getValue().toString());
-                }
-            }
-        }
-        MultipartBody multipartBody = builder.build();
-        return new Request.Builder()
-                .url(url)
-                .post(multipartBody)
-                .build();
-    }
-
-    /**
-     * get上传参数
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request get(String url, Map<Object, Object> oMap) {
-        StringBuilder str = new StringBuilder(url);
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            str.append("?");
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                str.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
-            }
-            str = new StringBuilder(str.substring(0, str.length() - 1));
-        }
-        if (OkHttpInfo.isLOG) {
-            Log.v(OkHttpInfo.TAG, str.toString());
-        }
-        return new Request.Builder()
-                .url(str.toString())
-                .get()
-                .build();
-    }
-
-    /**
-     * post上传参数
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request post(String url, Map<Object, Object> oMap) {
-        FormBody.Builder builder = new FormBody.Builder();
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                builder.add(entry.getKey().toString(), entry.getValue().toString());
-            }
-        }
-        FormBody build = builder.build();
-        return new Request.Builder()
-                .url(url)
-                .post(build)
-                .build();
-    }
-}

+ 0 - 400
okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequests.java

@@ -1,400 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.util.Log;
-
-import com.google.gson.Gson;
-import com.benyanyi.okhttp.listener.OnOkHttpListener;
-
-import org.json.XML;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import io.reactivex.Observable;
-import io.reactivex.ObservableEmitter;
-import io.reactivex.ObservableOnSubscribe;
-import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-import okhttp3.Call;
-import okhttp3.Callback;
-import okhttp3.FormBody;
-import okhttp3.MediaType;
-import okhttp3.MultipartBody;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.RequestBody;
-import okhttp3.Response;
-
-/**
- * @author myLove
- */
-
-class ObservableRequests<T> {
-    @SuppressLint("StaticFieldLeak")
-    private static ObservableRequests instance;
-    @SuppressLint("StaticFieldLeak")
-    private static Context mContext;
-    private static RequestType requestType;
-    private static CallType callType;
-
-    private static OkHttpClient okHttpClient;
-    private String mCacheUrl = "";
-
-    public Class<T> tClass;
-
-    static ObservableRequests getInstance(Context context, RequestType type1, CallType type2) {
-        if (instance == null) {
-            synchronized (ObservableRequests.class) {
-                if (instance == null) {
-                    instance = new ObservableRequests();
-                    OkHttpClient httpClient = new OkHttpClient();
-                    okHttpClient = httpClient.newBuilder()
-                            .addNetworkInterceptor(new CacheInterceptor())
-                            .addInterceptor(Cache.HTTP_LOGGING_INTERCEPTOR)
-                            .cache(Cache.privateCache(context))
-                            .connectTimeout(30, TimeUnit.SECONDS)
-                            .readTimeout(30, TimeUnit.SECONDS)
-                            .writeTimeout(30, TimeUnit.SECONDS)
-                            //支持HTTPS请求,跳过证书验证
-                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
-                            .build();
-                }
-            }
-        }
-        mContext = context;
-        requestType = type1;
-        callType = type2;
-        return instance;
-    }
-
-    void request(String url, Map<Object, Object> oMap, final OnOkHttpListener onOkHttpListener) {
-        getObservable(url, oMap).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-                .serialize().subscribe(new Observer<T>() {
-            @Override
-            public void onSubscribe(Disposable d) {
-
-            }
-
-            @Override
-            public void onNext(T t) {
-                onOkHttpListener.onSuccess(t);
-            }
-
-            @Override
-            public void onError(Throwable e) {
-                onOkHttpListener.onFailure(e);
-            }
-
-            @Override
-            public void onComplete() {
-                onOkHttpListener.onCompleted();
-            }
-        });
-    }
-
-    private Observable<T> getObservable(final String url, final Map<Object, Object> oMap) {
-        return Observable.create(new ObservableOnSubscribe<T>() {
-            @Override
-            public void subscribe(ObservableEmitter<T> e) {
-                send(url, oMap, e);
-            }
-        });
-    }
-
-    private void send(String url, Map<Object, Object> map, ObservableEmitter<T> subscriber) {
-        if (FormatUtil.isMapNotEmpty(map)) {
-            mCacheUrl = url + map.toString();
-        } else {
-            mCacheUrl = url;
-        }
-        InternetBean bean = Internet.ifInternet(mContext);
-        if (bean.getStatus()) {
-            Call call = okHttpClient.newCall(getRequest(url, map));
-            sendCall(call, subscriber);
-        } else {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                T t = new Gson().fromJson(json, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(new Error(bean.getMsg()));
-                subscriber.onComplete();
-            }
-        }
-    }
-
-    /**
-     * 请求
-     */
-    private void sendCall(Call call, ObservableEmitter<T> subscriber) {
-        if (callType == CallType.SYNC) {
-            sync(call, subscriber);
-        } else if (callType == CallType.ASYNC) {
-            async(call, subscriber);
-        }
-    }
-
-    /**
-     * 同步请求
-     */
-    private void sync(Call call, ObservableEmitter<T> subscriber) {
-        try {
-            Response execute = call.execute();
-            if (execute.isSuccessful()) {
-                String str = execute.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                boolean boo = ("<".equals(str.substring(0, 1)) || "[".equals(str.substring(0, 1)))
-                        && ("\"".equals(str.substring(1, 2)) || "[".equals(str.substring(1, 2)));
-                if (boo) {
-                    try {
-                        str = XML.toJSONObject(str).toString();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    String html = "<!DOCTYPE HTML>";
-                    if (!str.toUpperCase().contains(html)) {
-                        if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                            CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                        }
-                    }
-                }
-                T t = new Gson().fromJson(str, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            } else {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    T t = new Gson().fromJson(json, tClass);
-                    subscriber.onNext(t);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(new Exception("请求失败"));
-                    subscriber.onComplete();
-                }
-            }
-        } catch (IOException e) {
-            String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-            if (FormatUtil.isNotEmpty(json)) {
-                T t = new Gson().fromJson(json, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            } else {
-                subscriber.onError(e);
-                subscriber.onComplete();
-            }
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 异步请求
-     */
-    private void async(Call call, final ObservableEmitter<T> subscriber) {
-        call.enqueue(new Callback() {
-            @Override
-            public void onFailure(@NonNull Call call, @NonNull IOException e) {
-                String json = CacheUtils.getInstance(mContext).getCacheToLocalJson(mCacheUrl);
-                if (FormatUtil.isNotEmpty(json)) {
-                    T t = new Gson().fromJson(json, tClass);
-                    subscriber.onNext(t);
-                    subscriber.onComplete();
-                } else {
-                    subscriber.onError(e);
-                    subscriber.onComplete();
-                }
-                e.printStackTrace();
-            }
-
-            @Override
-            public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
-                String str = response.body().string();
-                if (OkHttpInfo.isLOG) {
-                    Log.v(OkHttpInfo.TAG, str);
-                }
-                boolean boo = ("<".equals(str.substring(0, 1)) || "[".equals(str.substring(0, 1)))
-                        && ("\"".equals(str.substring(1, 2)) || "[".equals(str.substring(1, 2)));
-                if (boo) {
-                    try {
-                        str = XML.toJSONObject(str).toString();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    String html = "<!DOCTYPE HTML>";
-                    if (!str.toUpperCase().contains(html)) {
-                        if (FormatUtil.isNotEmpty(mCacheUrl)) {
-                            CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
-                        }
-                    }
-                }
-                T t = new Gson().fromJson(str, tClass);
-                subscriber.onNext(t);
-                subscriber.onComplete();
-            }
-        });
-    }
-
-    /**
-     * 判断请求方式
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request getRequest(String url, Map<Object, Object> oMap) {
-        if (requestType == null) {
-            requestType = RequestType.POST;
-        }
-        switch (requestType) {
-            case GET:
-                return get(url, oMap);
-            case POST_XML_SOAP:
-                return postXMLToSoap(url, oMap);
-            case UP_FILE:
-                return upFile(url, oMap);
-            case ALL:
-                return upAll(url, oMap);
-            case POST:
-            default:
-                return post(url, oMap);
-        }
-    }
-
-    private Request postXMLToSoap(String url, Map<Object, Object> oMap) {
-        if (FormatUtil.isEmpty(OkHttpInfo.soapDataTopString)) {
-            throw new NullPointerException("OkHttpInfo.soapDataTopString不能为空");
-        }
-        if (FormatUtil.isEmpty(OkHttpInfo.soapDataBottomString)) {
-            throw new NullPointerException("OkHttpInfo.soapDataBottomString不能为空");
-        }
-        StringBuilder sb = new StringBuilder();
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                String key = entry.getKey().toString();
-                String value = entry.getValue().toString();
-                sb.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
-            }
-        }
-        MediaType mediaType = MediaType.parse(OkHttpInfo.soapMediaType);
-        String str = OkHttpInfo.soapDataTopString + sb + OkHttpInfo.soapDataBottomString;
-        if (OkHttpInfo.isLOG) {
-            Log.v(OkHttpInfo.TAG, str);
-        }
-        return new Request.Builder()
-                .url(url)
-                .post(RequestBody.create(mediaType, str))
-                .build();
-    }
-
-    /**
-     * 上传文件
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request upFile(String url, Map<Object, Object> oMap) {
-        MultipartBody.Builder builder = new MultipartBody.Builder()
-                .setType(MultipartBody.FORM);
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                File file = new File(entry.getValue().toString());
-                int indexOf = entry.getValue().toString().indexOf("/");
-                RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
-                String fileName = entry.getKey().toString().substring(indexOf + 1, entry.getKey().toString().length());
-                builder.addFormDataPart(entry.getKey().toString(), fileName, requestBody);
-            }
-        }
-        MultipartBody multipartBody = builder.build();
-        return new Request.Builder()
-                .url(url)
-                .post(multipartBody)
-                .build();
-    }
-
-    /**
-     * 参数和文件一起上传
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request upAll(String url, Map<Object, Object> oMap) {
-        MultipartBody.Builder builder = new MultipartBody.Builder()
-                .setType(MultipartBody.ALTERNATIVE);
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                int indexOf = entry.getValue().toString().lastIndexOf("/");
-                int indexOf1 = entry.getValue().toString().lastIndexOf(".");
-                if (indexOf > 0 && indexOf1 > 0) {
-                    File file = new File(entry.getValue().toString());
-                    RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
-                    String fileName = entry.getKey().toString().substring(indexOf + 1, entry.getKey().toString().length());
-                    builder.addFormDataPart(entry.getKey().toString(), fileName, requestBody);
-                } else {
-                    builder.addFormDataPart(entry.getKey().toString(), entry.getValue().toString());
-                }
-            }
-        }
-        MultipartBody multipartBody = builder.build();
-        return new Request.Builder()
-                .url(url)
-                .post(multipartBody)
-                .build();
-    }
-
-    /**
-     * get上传参数
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request get(String url, Map<Object, Object> oMap) {
-        StringBuilder str = new StringBuilder(url);
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            str.append("?");
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                str.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
-            }
-            str = new StringBuilder(str.substring(0, str.length() - 1));
-        }
-        if (OkHttpInfo.isLOG) {
-            Log.v(OkHttpInfo.TAG, str.toString());
-        }
-        return new Request.Builder()
-                .url(str.toString())
-                .get()
-                .build();
-    }
-
-    /**
-     * post上传参数
-     *
-     * @param url  地址
-     * @param oMap 键值
-     * @return request
-     */
-    private Request post(String url, Map<Object, Object> oMap) {
-        FormBody.Builder builder = new FormBody.Builder();
-        if (FormatUtil.isMapNotEmpty(oMap)) {
-            for (Map.Entry<Object, Object> entry : oMap.entrySet()) {
-                builder.add(entry.getKey().toString(), entry.getValue().toString());
-            }
-        }
-        FormBody build = builder.build();
-        return new Request.Builder()
-                .url(url)
-                .post(build)
-                .build();
-    }
-}

+ 0 - 24
okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpInfo.java

@@ -1,24 +0,0 @@
-package com.benyanyi.okhttp;
-
-/**
- * @author myLove
- */
-public class OkHttpInfo {
-    public static boolean isLOG = true;
-    /**
-     * soap协议类型
-     */
-    public static String soapMediaType = "text/xml; charset=UTF-8";
-    /**
-     * soap请求数据前半部分xml
-     */
-    public static String soapDataTopString = "";
-    /**
-     * soap请求数据后半部分xml
-     */
-    public static String soapDataBottomString = "";
-
-    public static String TAG = "OkHttpUtil--->>>>";
-
-    public static boolean xmlToJson = false;
-}

+ 13 - 33
okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpUtil.java

@@ -1,55 +1,35 @@
 package com.benyanyi.okhttp;
 
-import android.annotation.SuppressLint;
 import android.content.Context;
 
+import com.benyanyi.okhttp.type.CallType;
+import com.benyanyi.okhttp.type.RequestType;
+
 /**
- * @author myLove
+ * @author YanYi
+ * @date 2019-08-02 22:22
+ * @email ben@yanyi.red
+ * @overview
  */
-
 public class OkHttpUtil {
-    @SuppressLint("StaticFieldLeak")
+
     private static OkHttpUtil instance;
-    @SuppressLint("StaticFieldLeak")
     private static Context mContext;
 
     public static OkHttpUtil getInstance(Context context) {
         if (instance == null) {
-            synchronized (OkHttpUtil.class) {
-                if (instance == null) {
-                    instance = new OkHttpUtil();
-                }
-            }
+            instance = new OkHttpUtil();
         }
         mContext = context;
         return instance;
     }
 
-    public AutoRequest get(String url) {
-        return AutoRequest.getInstance(mContext, url, RequestType.GET);
-    }
-
-    public AutoRequest post(String url) {
-        return AutoRequest.getInstance(mContext, url, RequestType.POST);
-    }
-
-    public XmlRequest postXMLToSoap(String url) {
-        return XmlRequest.getInstance(mContext, url, RequestType.POST_XML_SOAP);
-    }
-
-    public AutoRequest postUpFile(String url) {
-        return AutoRequest.getInstance(mContext, url, RequestType.UP_FILE);
+    public RequestType url(String url) {
+        return new CallType(mContext, url, false);
     }
 
-    public AutoRequest postAll(String url) {
-        return AutoRequest.getInstance(mContext, url, RequestType.UP_FILE);
+    public RequestType url(String url, boolean isCache) {
+        return new CallType(mContext, url, isCache);
     }
 
-    public AutoIsRequest send(String url) {
-        return AutoIsRequest.getInstance(mContext, url);
-    }
-
-    public DownloadRequest downloadFile(String url) {
-        return DownloadRequest.getInstance(mContext, url);
-    }
 }

+ 0 - 28
okhttplib/src/main/java/com/benyanyi/okhttp/RequestType.java

@@ -1,28 +0,0 @@
-package com.benyanyi.okhttp;
-
-/**
- * @author myLove
- */
-
-enum RequestType {
-    /**
-     * get
-     */
-    GET,
-    /**
-     * post
-     */
-    POST,
-    /**
-     * post xml
-     */
-    POST_XML_SOAP,
-    /**
-     * 上传文件
-     */
-    UP_FILE,
-    /**
-     * 所有
-     */
-    ALL,
-}

+ 0 - 29
okhttplib/src/main/java/com/benyanyi/okhttp/TrustAllCerts.java

@@ -1,29 +0,0 @@
-package com.benyanyi.okhttp;
-
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.X509TrustManager;
-
-/**
- * @author BenYanYi
- * @date 2019/01/30 22:38
- * @email ben@yanyi.red
- * @overview 用于信任所有证书
- */
-public class TrustAllCerts implements X509TrustManager {
-    @Override
-    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-
-    }
-
-    @Override
-    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-
-    }
-
-    @Override
-    public X509Certificate[] getAcceptedIssuers() {
-        return new X509Certificate[0];
-    }
-}

+ 0 - 46
okhttplib/src/main/java/com/benyanyi/okhttp/XmlRequest.java

@@ -1,46 +0,0 @@
-package com.benyanyi.okhttp;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-
-import com.benyanyi.okhttp.listener.OnOkHttpListener;
-
-import java.util.Map;
-
-/**
- * @author myLove
- */
-
-public class XmlRequest {
-    @SuppressLint("StaticFieldLeak")
-    private static XmlRequest instance;
-    private static String url;
-    @SuppressLint("StaticFieldLeak")
-    private static Context mContext;
-    private static RequestType requestType;
-
-    private XmlRequest() {
-    }
-
-    public static XmlRequest getInstance(Context context, String str, RequestType type) {
-        if (instance == null) {
-            synchronized (XmlRequest.class) {
-                if (instance == null) {
-                    instance = new XmlRequest();
-                }
-            }
-        }
-        mContext = context;
-        url = str;
-        requestType = type;
-        return instance;
-    }
-
-    public void sync(Map<Object, Object> map, OnOkHttpListener onOkHttpListener) {
-        ObservableRequest.getInstance(mContext, requestType, CallType.SYNC).request(url, map, onOkHttpListener);
-    }
-
-    public void async(Map<Object, Object> map, OnOkHttpListener onOkHttpListener) {
-        ObservableRequest.getInstance(mContext, requestType, CallType.ASYNC).request(url, map, onOkHttpListener);
-    }
-}

+ 228 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/call/BeanCall.java

@@ -0,0 +1,228 @@
+package com.benyanyi.okhttp.call;
+
+import android.content.Context;
+
+import com.benyanyi.okhttp.config.CallType;
+import com.benyanyi.okhttp.util.OkHttpLog;
+import com.benyanyi.okhttp.util.CacheUtils;
+import com.benyanyi.okhttp.util.FormatUtil;
+import com.benyanyi.okhttp.util.Internet;
+import com.benyanyi.okhttp.util.InternetBean;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+import org.json.XML;
+
+import java.io.IOException;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 11:43
+ * @email ben@yanyi.red
+ * @overview
+ */
+class BeanCall<T> {
+
+    private Class<T> tClass;
+    private CallType callType;
+    private Call call;
+    private boolean isCache;//是否需要缓存
+    private String mCacheName;//缓存名称
+    private Context context;
+    private OnOkHttpListener<T> onOkHttpListener;
+
+    BeanCall(CallBuilder builder, Class<T> tClass) {
+        this.callType = builder.getCallType();
+        this.call = builder.getCall();
+        this.isCache = builder.isCache();
+        this.mCacheName = builder.getCacheName();
+        this.context = builder.getContext();
+        this.tClass = tClass;
+    }
+
+    void send(OnOkHttpListener<T> okHttpListener) {
+        this.onOkHttpListener = okHttpListener;
+        InternetBean internetBean = Internet.ifInternet(context);
+        if (internetBean.getStatus()) {
+            sendCall().subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .serialize()
+                    .subscribe(new Observer<T>() {
+                        @Override
+                        public void onSubscribe(Disposable d) {
+
+                        }
+
+                        @Override
+                        public void onNext(T t) {
+                            onOkHttpListener.onSuccess(t);
+                        }
+
+                        @Override
+                        public void onError(Throwable e) {
+                            onOkHttpListener.onFailure(e);
+                        }
+
+                        @Override
+                        public void onComplete() {
+                            onOkHttpListener.onCompleted();
+                        }
+                    });
+        } else {
+            if (isCache) {
+                String str = CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName);
+                onOkHttpListener.onSuccess(dataToT(str));
+            }
+            onOkHttpListener.onFailure(new Exception(internetBean.getMsg()));
+            onOkHttpListener.onCompleted();
+        }
+    }
+
+    private Observable<T> sendCall() {
+        return Observable.create(new ObservableOnSubscribe<T>() {
+            @Override
+            public void subscribe(ObservableEmitter<T> emitter) throws Exception {
+                send(emitter);
+            }
+        });
+    }
+
+    private void send(ObservableEmitter<T> emitter) {
+        if (callType == CallType.ASYNC) {
+            async(emitter);
+        } else {
+            sync(emitter);
+        }
+    }
+
+    private void async(final ObservableEmitter<T> emitter) {
+        call.enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                OkHttpLog.e(e.getMessage());
+                emitter.onError(e);
+                emitter.onComplete();
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                success(response, emitter);
+            }
+        });
+    }
+
+    private void sync(ObservableEmitter<T> emitter) {
+        try {
+            Response response = call.execute();
+            success(response, emitter);
+        } catch (Exception e) {
+            OkHttpLog.e(e.getMessage());
+            emitter.onError(e);
+            emitter.onComplete();
+        }
+    }
+
+    private void success(Response response, ObservableEmitter<T> emitter) throws IOException {
+        ResponseBody body = response.body();
+        if (body != null) {
+            if (response.isSuccessful()) {
+                if (response.networkResponse() != null) {//网络请求有数据
+                    String str = body.string();
+                    T t = dataToT(dataProcessing(str));
+                    emitter.onNext(t);
+                    emitter.onComplete();
+                } else {
+                    dataReturn(body.string(), emitter);
+                }
+            } else {
+                dataReturn(body.string(), emitter);
+            }
+        } else {
+            dataReturn(null, emitter);
+        }
+    }
+
+    /**
+     * 数据处理
+     */
+    private String dataProcessing(String message) {
+        String str = message;
+        OkHttpLog.d(str);
+        String html = "<!DOCTYPE HTML>";
+        if (!str.toUpperCase().contains(html)) {
+            if (FormatUtil.isNotEmpty(mCacheName)) {
+                CacheUtils.getInstance(context).setCacheToLocalJson(mCacheName, str);
+            }
+        } else {
+            if (isCache) {
+                str = CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName);
+            }
+        }
+        return str;
+    }
+
+    /**
+     * 数据返回
+     *
+     * @param message
+     * @param emitter
+     */
+    private void dataReturn(String message, ObservableEmitter<T> emitter) {
+        if (isCache) {
+            T t = dataToT(CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName));
+            emitter.onNext(t);
+            emitter.onComplete();
+        } else {
+            T t = dataToT(dataProcessing(message));
+            emitter.onNext(t);
+            emitter.onComplete();
+        }
+    }
+
+    private T dataToT(String data) {
+        String str = data;
+        OkHttpLog.d(str);
+        T t = null;
+        boolean boo = ("<".equals(str.substring(0, 1)) || "[".equals(str.substring(0, 1)))
+                && ("\"".equals(str.substring(1, 2)) || "[".equals(str.substring(1, 2)));
+        if (boo) {
+            try {
+                str = XML.toJSONObject(str).toString();
+            } catch (Exception e) {
+                OkHttpLog.e(e.getMessage());
+            }
+        }
+        JsonParser jsonParser = new JsonParser();
+        JsonElement parse = jsonParser.parse(str);
+        if (parse.isJsonObject()) {
+            try {
+                t = new Gson().fromJson(str, tClass);
+            } catch (Exception e) {
+                OkHttpLog.e(e.getMessage());
+            }
+        } else {
+            try {
+                t = new Gson().fromJson(str, tClass);
+            } catch (Exception e) {
+                OkHttpLog.e(e.getMessage());
+            }
+        }
+        return t;
+    }
+
+
+}

+ 78 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/call/CallBuilder.java

@@ -0,0 +1,78 @@
+package com.benyanyi.okhttp.call;
+
+import android.content.Context;
+
+import com.benyanyi.okhttp.config.CallType;
+
+import okhttp3.Call;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 15:46
+ * @email ben@yanyi.red
+ * @overview
+ */
+class CallBuilder {
+    private CallType callType;
+    private Call call;
+    private boolean isCache;//是否需要缓存
+    private String mCacheName;//缓存名称
+    private Context context;
+
+    CallBuilder setCallType(CallType callType) {
+        this.callType = callType;
+        return this;
+    }
+
+    CallBuilder setCall(Call call) {
+        this.call = call;
+        return this;
+    }
+
+    CallBuilder setCache(boolean cache) {
+        isCache = cache;
+        return this;
+    }
+
+    CallBuilder setCacheName(String mCacheName) {
+        this.mCacheName = mCacheName;
+        return this;
+    }
+
+    CallBuilder setContext(Context context) {
+        this.context = context;
+        return this;
+    }
+
+    CallType getCallType() {
+        return callType;
+    }
+
+    Call getCall() {
+        return call;
+    }
+
+    boolean isCache() {
+        return isCache;
+    }
+
+    String getCacheName() {
+        return mCacheName;
+    }
+
+    Context getContext() {
+        return context;
+    }
+
+    ObjectCall builder() {
+        return new ObjectCall(this);
+    }
+
+    <T> BeanCall<T> builder(Class<T> tClass) {
+        return new BeanCall<>(this, tClass);
+    }
+
+    <T> ListCall<T> listBuilder(Class<T> tClass) {
+        return new ListCall<>(this, tClass);
+    }
+}

+ 102 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/call/HttpCall.java

@@ -0,0 +1,102 @@
+package com.benyanyi.okhttp.call;
+
+import android.content.Context;
+
+import com.benyanyi.okhttp.config.CallType;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
+
+import java.util.List;
+
+import okhttp3.Call;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+
+/**
+ * @author YanYi
+ * @date 2019-08-02 22:23
+ * @email ben@yanyi.red
+ * @overview 数据请求
+ */
+public class HttpCall implements RequestConfig {
+
+    private CallBuilder builder;
+
+    private HttpCall(Builder builder) {
+        Call call = builder.httpClient.newCall(builder.request);
+        this.builder = new CallBuilder()
+                .setCache(builder.isCache)
+                .setCacheName(builder.mCacheUrl)
+                .setContext(builder.context)
+                .setCall(call);
+    }
+
+    @Override
+    public <T> void async(Class<T> tClass, OnOkHttpListener<T> onOkHttpListener) {
+        this.builder.setCallType(CallType.ASYNC).builder(tClass).send(onOkHttpListener);
+    }
+
+    @Override
+    public <T> void sync(Class<T> tClass, OnOkHttpListener<T> onOkHttpListener) {
+        this.builder.setCallType(CallType.SYNC).builder(tClass).send(onOkHttpListener);
+    }
+
+    @Override
+    public <T> void asyncList(Class<T> tClass, OnOkHttpListener<List<T>> onOkHttpListener) {
+        this.builder.setCallType(CallType.ASYNC).listBuilder(tClass).send(onOkHttpListener);
+    }
+
+    @Override
+    public <T> void syncList(Class<T> tClass, OnOkHttpListener<List<T>> onOkHttpListener) {
+        this.builder.setCallType(CallType.SYNC).listBuilder(tClass).send(onOkHttpListener);
+    }
+
+    @Override
+    public void async(OnOkHttpListener<Object> onOkHttpListener) {
+        this.builder.setCallType(CallType.ASYNC).builder().send(onOkHttpListener);
+    }
+
+    @Override
+    public void sync(OnOkHttpListener<Object> onOkHttpListener) {
+        this.builder.setCallType(CallType.SYNC).builder().send(onOkHttpListener);
+    }
+
+
+    public static class Builder {
+
+        private Context context;
+        private String mCacheUrl;
+        private Request request;
+        private OkHttpClient httpClient;
+        private boolean isCache;//是否需要缓存
+
+        public Builder setContext(Context context) {
+            this.context = context;
+            return this;
+        }
+
+        public Builder setCacheUrl(String mCacheUrl) {
+            this.mCacheUrl = mCacheUrl;
+            return this;
+        }
+
+        public Builder setRequest(Request request) {
+            this.request = request;
+            return this;
+        }
+
+        public Builder setHttpClient(OkHttpClient httpClient) {
+            this.httpClient = httpClient;
+            return this;
+        }
+
+        public Builder setCache(boolean cache) {
+            isCache = cache;
+            return this;
+        }
+
+        public RequestConfig builder() {
+            return new HttpCall(this);
+        }
+    }
+
+}

+ 238 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/call/ListCall.java

@@ -0,0 +1,238 @@
+package com.benyanyi.okhttp.call;
+
+import android.content.Context;
+
+import com.benyanyi.okhttp.config.CallType;
+import com.benyanyi.okhttp.util.OkHttpLog;
+import com.benyanyi.okhttp.util.CacheUtils;
+import com.benyanyi.okhttp.util.FormatUtil;
+import com.benyanyi.okhttp.util.Internet;
+import com.benyanyi.okhttp.util.InternetBean;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+
+import org.json.XML;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 11:43
+ * @email ben@yanyi.red
+ * @overview
+ */
+class ListCall<T> {
+
+    private Class<T> tClass;
+    private CallType callType;
+    private Call call;
+    private boolean isCache;//是否需要缓存
+    private String mCacheName;//缓存名称
+    private Context context;
+    private OnOkHttpListener<List<T>> onOkHttpListener;
+
+    ListCall(CallBuilder builder, Class<T> tClass) {
+        this.callType = builder.getCallType();
+        this.call = builder.getCall();
+        this.isCache = builder.isCache();
+        this.mCacheName = builder.getCacheName();
+        this.context = builder.getContext();
+        this.tClass = tClass;
+    }
+
+    void send(OnOkHttpListener<List<T>> okHttpListener) {
+        this.onOkHttpListener = okHttpListener;
+        InternetBean internetBean = Internet.ifInternet(context);
+        if (internetBean.getStatus()) {
+            sendCall().subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .serialize()
+                    .subscribe(new Observer<List<T>>() {
+                        @Override
+                        public void onSubscribe(Disposable d) {
+
+                        }
+
+                        @Override
+                        public void onNext(List<T> t) {
+                            onOkHttpListener.onSuccess(t);
+                        }
+
+                        @Override
+                        public void onError(Throwable e) {
+                            onOkHttpListener.onFailure(e);
+                        }
+
+                        @Override
+                        public void onComplete() {
+                            onOkHttpListener.onCompleted();
+                        }
+                    });
+        } else {
+            if (isCache) {
+                String str = CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName);
+                onOkHttpListener.onSuccess(dataToT(str));
+            }
+            onOkHttpListener.onFailure(new Exception(internetBean.getMsg()));
+            onOkHttpListener.onCompleted();
+        }
+    }
+
+    private Observable<List<T>> sendCall() {
+        return Observable.create(new ObservableOnSubscribe<List<T>>() {
+            @Override
+            public void subscribe(ObservableEmitter<List<T>> emitter) throws Exception {
+                send(emitter);
+            }
+        });
+    }
+
+    private void send(ObservableEmitter<List<T>> emitter) {
+        if (callType == CallType.ASYNC) {
+            async(emitter);
+        } else {
+            sync(emitter);
+        }
+    }
+
+    private void async(final ObservableEmitter<List<T>> emitter) {
+        call.enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                OkHttpLog.e(e.getMessage());
+                emitter.onError(e);
+                emitter.onComplete();
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                success(response, emitter);
+            }
+        });
+    }
+
+    private void sync(ObservableEmitter<List<T>> emitter) {
+        try {
+            Response response = call.execute();
+            success(response, emitter);
+        } catch (Exception e) {
+            OkHttpLog.e(e.getMessage());
+            emitter.onError(e);
+            emitter.onComplete();
+        }
+    }
+
+    private void success(Response response, ObservableEmitter<List<T>> emitter) throws IOException {
+        ResponseBody body = response.body();
+        if (body != null) {
+            if (response.isSuccessful()) {
+                if (response.networkResponse() != null) {//网络请求有数据
+                    String str = body.string();
+                    List<T> t = dataToT(dataProcessing(str));
+                    emitter.onNext(t);
+                    emitter.onComplete();
+                } else {
+                    dataReturn(body.string(), emitter);
+                }
+            } else {
+                dataReturn(body.string(), emitter);
+            }
+        } else {
+            dataReturn(null, emitter);
+        }
+    }
+
+    /**
+     * 数据处理
+     */
+    private String dataProcessing(String message) {
+        String str = message;
+        OkHttpLog.d(str);
+        String html = "<!DOCTYPE HTML>";
+        if (!str.toUpperCase().contains(html)) {
+            if (FormatUtil.isNotEmpty(mCacheName)) {
+                CacheUtils.getInstance(context).setCacheToLocalJson(mCacheName, str);
+            }
+        } else {
+            if (isCache) {
+                str = CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName);
+            }
+        }
+        return str;
+    }
+
+    /**
+     * 数据返回
+     *
+     * @param message
+     * @param emitter
+     */
+    private void dataReturn(String message, ObservableEmitter<List<T>> emitter) {
+        if (isCache) {
+            List<T> list = dataToT(CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName));
+            emitter.onNext(list);
+            emitter.onComplete();
+        } else {
+            List<T> list = dataToT(dataProcessing(message));
+            emitter.onNext(list);
+            emitter.onComplete();
+        }
+    }
+
+    private List<T> dataToT(String data) {
+        String str = data;
+        OkHttpLog.d(str);
+        List<T> list = new ArrayList<>();
+        boolean boo = ("<".equals(str.substring(0, 1)) || "[".equals(str.substring(0, 1)))
+                && ("\"".equals(str.substring(1, 2)) || "[".equals(str.substring(1, 2)));
+        if (boo) {
+            try {
+                str = XML.toJSONObject(str).toString();
+            } catch (Exception e) {
+                OkHttpLog.e(e.getMessage());
+            }
+        }
+        JsonParser jsonParser = new JsonParser();
+        JsonElement parse = jsonParser.parse(str);
+        Gson gson = new Gson();
+        if (parse.isJsonArray()) {
+            JsonArray array = parse.getAsJsonArray();
+            for (int i = 0; i < array.size(); i++) {
+                T t = gson.fromJson(array.getAsJsonObject().toString(), tClass);
+                list.add(t);
+            }
+        } else if (parse.isJsonObject()) {
+            try {
+                T t = gson.fromJson(str, tClass);
+                list.add(t);
+            } catch (Exception e) {
+                OkHttpLog.e(e.getMessage());
+            }
+        } else {
+            try {
+                T t = gson.fromJson(str, tClass);
+                list.add(t);
+            } catch (Exception e) {
+                OkHttpLog.e(e.getMessage());
+            }
+        }
+        return list;
+    }
+}

+ 184 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/call/ObjectCall.java

@@ -0,0 +1,184 @@
+package com.benyanyi.okhttp.call;
+
+import android.content.Context;
+
+import com.benyanyi.okhttp.config.CallType;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
+import com.benyanyi.okhttp.util.CacheUtils;
+import com.benyanyi.okhttp.util.FormatUtil;
+import com.benyanyi.okhttp.util.Internet;
+import com.benyanyi.okhttp.util.InternetBean;
+import com.benyanyi.okhttp.util.OkHttpLog;
+
+import java.io.IOException;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 09:43
+ * @email ben@yanyi.red
+ * @overview
+ */
+class ObjectCall {
+    private CallType callType;
+    private Call call;
+    private boolean isCache;//是否需要缓存
+    private String mCacheName;//缓存名称
+    private Context context;
+    private OnOkHttpListener<Object> onOkHttpListener;
+
+    ObjectCall(CallBuilder builder) {
+        this.callType = builder.getCallType();
+        this.call = builder.getCall();
+        this.isCache = builder.isCache();
+        this.mCacheName = builder.getCacheName();
+        this.context = builder.getContext();
+    }
+
+    void send(OnOkHttpListener<Object> okHttpListener) {
+        this.onOkHttpListener = okHttpListener;
+        InternetBean internetBean = Internet.ifInternet(context);
+        if (internetBean.getStatus()) {
+            sendCall().subscribeOn(Schedulers.io())
+                    .observeOn(AndroidSchedulers.mainThread())
+                    .serialize()
+                    .subscribe(new Observer<Object>() {
+                        @Override
+                        public void onSubscribe(Disposable d) {
+
+                        }
+
+                        @Override
+                        public void onNext(Object o) {
+                            onOkHttpListener.onSuccess(o);
+                        }
+
+                        @Override
+                        public void onError(Throwable e) {
+                            onOkHttpListener.onFailure(e);
+                        }
+
+                        @Override
+                        public void onComplete() {
+                            onOkHttpListener.onCompleted();
+                        }
+                    });
+        } else {
+            if (isCache) {
+                String str = CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName);
+                onOkHttpListener.onSuccess(str);
+            }
+            onOkHttpListener.onFailure(new Exception(internetBean.getMsg()));
+            onOkHttpListener.onCompleted();
+        }
+    }
+
+    private Observable<Object> sendCall() {
+        return Observable.create(new ObservableOnSubscribe<Object>() {
+            @Override
+            public void subscribe(ObservableEmitter<Object> emitter) throws Exception {
+                send(emitter);
+            }
+        });
+    }
+
+    private void send(ObservableEmitter<Object> emitter) {
+        if (callType == CallType.ASYNC) {
+            async(emitter);
+        } else {
+            sync(emitter);
+        }
+    }
+
+    private void async(final ObservableEmitter<Object> emitter) {
+        call.enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                OkHttpLog.e(e.getMessage());
+                emitter.onError(e);
+                emitter.onComplete();
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                success(response, emitter);
+            }
+        });
+    }
+
+    private void sync(ObservableEmitter<Object> emitter) {
+        try {
+            Response response = call.execute();
+            success(response, emitter);
+        } catch (IOException e) {
+            OkHttpLog.e(e.getMessage());
+            emitter.onError(e);
+            emitter.onComplete();
+        }
+    }
+
+    private void success(Response response, ObservableEmitter<Object> emitter) throws IOException {
+        ResponseBody body = response.body();
+        if (body != null) {
+            if (response.isSuccessful()) {
+                if (response.networkResponse() != null) {//网络请求有数据
+                    String str = body.string();
+                    emitter.onNext(dataProcessing(str));
+                    emitter.onComplete();
+                } else {
+                    dataReturn(body.string(), emitter);
+                }
+            } else {
+                dataReturn(body.string(), emitter);
+            }
+        } else {
+            dataReturn(null, emitter);
+        }
+    }
+
+    /**
+     * 数据处理
+     */
+    private String dataProcessing(String message) {
+        String str = message;
+        OkHttpLog.d(str);
+        String html = "<!DOCTYPE HTML>";
+        if (!str.toUpperCase().contains(html)) {
+            if (FormatUtil.isNotEmpty(mCacheName)) {
+                CacheUtils.getInstance(context).setCacheToLocalJson(mCacheName, str);
+            }
+        } else {
+            if (isCache) {
+                str = CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName);
+            }
+        }
+        return str;
+    }
+
+    /**
+     * 数据返回
+     *
+     * @param message
+     * @param emitter
+     */
+    private void dataReturn(String message, ObservableEmitter<Object> emitter) {
+        if (isCache) {
+            emitter.onNext(CacheUtils.getInstance(context).getCacheToLocalJson(mCacheName));
+            emitter.onComplete();
+        } else {
+            emitter.onNext(dataProcessing(message));
+            emitter.onComplete();
+        }
+    }
+}

+ 28 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/call/RequestConfig.java

@@ -0,0 +1,28 @@
+package com.benyanyi.okhttp.call;
+
+
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
+
+import java.util.List;
+
+/**
+ * @author YanYi
+ * @date 2019-08-02 22:25
+ * @email ben@yanyi.red
+ * @overview
+ */
+public interface RequestConfig {
+
+    void async(OnOkHttpListener<Object> onOkHttpListener);
+
+    void sync(OnOkHttpListener<Object> onOkHttpListener);
+
+    <T> void async(Class<T> tClass, OnOkHttpListener<T> onOkHttpListener);
+
+    <T> void sync(Class<T> tClass, OnOkHttpListener<T> onOkHttpListener);
+
+    <T> void asyncList(Class<T> tClass, OnOkHttpListener<List<T>> onOkHttpListener);
+
+    <T> void syncList(Class<T> tClass, OnOkHttpListener<List<T>> onOkHttpListener);
+
+}

+ 57 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/config/CacheInterceptor.java

@@ -0,0 +1,57 @@
+package com.benyanyi.okhttp.config;
+
+
+import android.content.Context;
+
+import com.benyanyi.okhttp.util.InternetUtil;
+
+import java.io.IOException;
+
+import okhttp3.CacheControl;
+import okhttp3.Interceptor;
+import okhttp3.Request;
+import okhttp3.Response;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 16:51
+ * @email ben@yanyi.red
+ * @overview
+ */
+public class CacheInterceptor implements Interceptor {
+
+    private Context context;
+
+    public CacheInterceptor(Context context) {
+        this.context = context;
+    }
+
+    @Override
+    public Response intercept(Chain chain) throws IOException {
+
+        Request request = chain.request();
+        if (InternetUtil.isNetWorkConnected(context)) {
+            request = request.newBuilder()
+                    .cacheControl(CacheControl.FORCE_CACHE)
+                    .build();
+        }
+        Response response = chain.proceed(request);
+        if (!InternetUtil.isNetWorkConnected(context)) {
+            int maxAge = 0 * 60;
+            // 有网络时 设置缓存超时时间0个小时
+            response.newBuilder()
+                    .header("Cache-Control", "public, max-age=$maxAge")
+                    .removeHeader("Pragma")// 清除头信息,因为服务器如果不支持,会返回一些干扰信息,不清除下面无法生效
+                    .build();
+        } else {
+            // 无网络时,设置超时为4周
+            int maxStale = 60 * 60 * 24 * 28;
+//            val maxStale = 0
+            response.newBuilder()
+                    .header("Cache-Control", "public, only-if-cached, max-stale=$maxStale")
+                    .removeHeader("Pragma")
+                    .build();
+        }
+        return response;
+    }
+}

+ 2 - 2
okhttplib/src/main/java/com/benyanyi/okhttp/CallType.java → okhttplib/src/main/java/com/benyanyi/okhttp/config/CallType.java

@@ -1,10 +1,10 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.config;
 
 /**
  * @author myLove
  */
 
-enum CallType {
+public enum CallType {
     /**
      * 同步
      */

+ 35 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/config/Client.java

@@ -0,0 +1,35 @@
+package com.benyanyi.okhttp.config;
+
+import android.content.Context;
+
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.OkHttpClient;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 16:49
+ * @email ben@yanyi.red
+ * @overview
+ */
+public class Client {
+
+    public static OkHttpClient getClient(Context context, boolean isCache) {
+        OkHttpClient.Builder builder = new OkHttpClient.Builder();
+        builder.addNetworkInterceptor(HttpConfig.HTTP_LOGGING_INTERCEPTOR);
+        if (isCache) {
+            builder.addInterceptor(new CacheInterceptor(context))
+//                .addNetworkInterceptor(CacheInterceptor())
+//                .addInterceptor(HttpConfig.httpInterception())
+                    .cache(HttpConfig.privateCache(context));
+        }
+        return builder.connectTimeout(10, TimeUnit.SECONDS)
+                .writeTimeout(10, TimeUnit.SECONDS)
+                .readTimeout(10, TimeUnit.SECONDS)
+                //支持HTTPS请求,跳过证书验证
+                .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
+                .hostnameVerifier(HttpConfig.verifier())
+                .build();
+    }
+
+}

+ 51 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/config/HttpConfig.java

@@ -0,0 +1,51 @@
+package com.benyanyi.okhttp.config;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+
+import com.benyanyi.okhttp.util.OkHttpLog;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSession;
+
+import okhttp3.logging.HttpLoggingInterceptor;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 16:50
+ * @email ben@yanyi.red
+ * @overview
+ */
+public class HttpConfig {
+
+    public static HttpLoggingInterceptor HTTP_LOGGING_INTERCEPTOR =
+            new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
+                @Override
+                public void log(@NonNull String message) {
+                    OkHttpLog.d(message);
+                }
+            }).setLevel(HttpLoggingInterceptor.Level.BODY);
+
+    /**
+     * 设置缓存路径,以及缓存文件大小
+     */
+    public static okhttp3.Cache privateCache(Context mContext) {
+        return new okhttp3.Cache(mContext.getCacheDir(), 1024 * 1024);
+    }
+//    fun verifier(): HostnameVerifier
+//
+//    {
+//        return HostnameVerifier { _, _ -> true }
+//
+//    }
+
+    public static HostnameVerifier verifier() {
+        return new HostnameVerifier() {
+            @Override
+            public boolean verify(String hostname, SSLSession session) {
+                return true;
+            }
+        };
+    }
+
+}

+ 4 - 4
okhttplib/src/main/java/com/benyanyi/okhttp/SslConfig.java → okhttplib/src/main/java/com/benyanyi/okhttp/config/SslConfig.java

@@ -1,4 +1,4 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.config;
 
 import java.security.SecureRandom;
 import java.security.cert.CertificateException;
@@ -15,7 +15,7 @@ import javax.net.ssl.X509TrustManager;
  * @email ben@yanyi.red
  * @overview
  */
-class SslConfig {
+public class SslConfig {
     /**
      * 生成安全套接字工厂,用于https请求的证书跳过
      * <p>
@@ -29,7 +29,7 @@ class SslConfig {
      *
      * @return
      */
-    static SSLSocketFactory createSSLSocketFactory() {
+    public static SSLSocketFactory createSSLSocketFactory() {
 
         SSLSocketFactory sslSocketFactory = null;
         try {
@@ -42,7 +42,7 @@ class SslConfig {
         return sslSocketFactory;
     }
 
-    static X509TrustManager getTrustManager() {
+    public static X509TrustManager getTrustManager() {
         return new X509TrustManager() {
             @Override
             public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

+ 2 - 2
okhttplib/src/main/java/com/benyanyi/okhttp/DownloadBean.java → okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/DownloadBean.java

@@ -1,4 +1,4 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.deprecated;
 
 /**
  * @author BenYanYi
@@ -6,7 +6,7 @@ package com.benyanyi.okhttp;
  * @email ben@yanyi.red
  * @overview 下载状态
  */
-public class DownloadBean {
+class DownloadBean {
     public int status = 0;
     public String filePath;
 

+ 26 - 34
okhttplib/src/main/java/com/benyanyi/okhttp/DownloadObservable.java → okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/DownloadObservable.java

@@ -1,9 +1,16 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.deprecated;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.support.annotation.NonNull;
 
+import com.benyanyi.okhttp.config.CacheInterceptor;
+import com.benyanyi.okhttp.config.HttpConfig;
+import com.benyanyi.okhttp.config.SslConfig;
+import com.benyanyi.okhttp.util.FormatUtil;
+import com.benyanyi.okhttp.util.Internet;
+import com.benyanyi.okhttp.util.InternetBean;
+import com.benyanyi.okhttp.util.OkHttpLog;
 import com.benyanyi.okhttp.listener.OnDownloadListener;
 
 import java.io.File;
@@ -49,9 +56,9 @@ class DownloadObservable {
                     OkHttpClient httpClient = new OkHttpClient();
 
                     okHttpClient = httpClient.newBuilder()
-                            .addNetworkInterceptor(new CacheInterceptor())
-                            .addInterceptor(Cache.HTTP_LOGGING_INTERCEPTOR)
-                            .cache(Cache.privateCache(context))
+                            .addNetworkInterceptor(new CacheInterceptor(context))
+                            .addInterceptor(HttpConfig.HTTP_LOGGING_INTERCEPTOR)
+                            .cache(HttpConfig.privateCache(context))
                             .connectTimeout(30, TimeUnit.SECONDS)
                             .readTimeout(30, TimeUnit.SECONDS)
                             .writeTimeout(30, TimeUnit.SECONDS)
@@ -79,9 +86,7 @@ class DownloadObservable {
 
                     @Override
                     public void onNext(DownloadBean bean) {
-                        if (OkHttpInfo.isLOG) {
-                            LogHelper.v(bean);
-                        }
+                        OkHttpLog.d(bean);
                         if (bean.status == 1) {
                             onDownloadListener.onSuccess(bean.filePath);
                         } else {
@@ -91,17 +96,14 @@ class DownloadObservable {
 
                     @Override
                     public void onError(Throwable e) {
-                        if (OkHttpInfo.isLOG) {
-                            LogHelper.e(e.getMessage());
-                        }
+                        OkHttpLog.e(e.getMessage());
                         onDownloadListener.onFailure(e);
                     }
 
                     @Override
                     public void onComplete() {
-                        if (OkHttpInfo.isLOG) {
-                            LogHelper.v("*****");
-                        }
+                        OkHttpLog.d("********");
+
                         onDownloadListener.onCompleted();
                     }
                 });
@@ -136,9 +138,8 @@ class DownloadObservable {
         call.enqueue(new Callback() {
             @Override
             public void onFailure(@NonNull Call call, @NonNull IOException e) {
-                if (OkHttpInfo.isLOG) {
-                    LogHelper.e(e.getMessage());
-                }
+                OkHttpLog.e(e.getMessage());
+
                 subscriber.onError(e);
                 subscriber.onComplete();
             }
@@ -168,33 +169,26 @@ class DownloadObservable {
                 file = new File(savePath, fileName);
             }
             bean.filePath = file.getAbsolutePath();
-            if (OkHttpInfo.isLOG) {
-                LogHelper.d(filePath);
-            }
+            OkHttpLog.d(filePath);
             fos = new FileOutputStream(file);
             long sum = 0;
             while ((len = is.read(buf)) != -1) {
                 fos.write(buf, 0, len);
                 sum += len;
                 bean.status = 0;
-                if (OkHttpInfo.isLOG) {
-                    LogHelper.d(bean);
-                }
+                OkHttpLog.d(bean);
                 // 下载中
                 subscriber.onNext(bean);
             }
             fos.flush();
             // 下载完成
             bean.status = 1;
-            if (OkHttpInfo.isLOG) {
-                LogHelper.d(bean);
-            }
+            OkHttpLog.d(bean);
+
             subscriber.onNext(bean);
             subscriber.onComplete();
         } catch (Exception e) {
-            if (OkHttpInfo.isLOG) {
-                LogHelper.e(e.getMessage());
-            }
+            OkHttpLog.e(e.getMessage());
             subscriber.onError(e);
             subscriber.onComplete();
         } finally {
@@ -203,18 +197,16 @@ class DownloadObservable {
                     is.close();
                 }
             } catch (IOException e) {
-                if (OkHttpInfo.isLOG) {
-                    LogHelper.e(e.getMessage());
-                }
+                OkHttpLog.e(e.getMessage());
+
             }
             try {
                 if (fos != null) {
                     fos.close();
                 }
             } catch (IOException e) {
-                if (OkHttpInfo.isLOG) {
-                    LogHelper.e(e.getMessage());
-                }
+                OkHttpLog.e(e.getMessage());
+
             }
         }
     }

+ 5 - 4
okhttplib/src/main/java/com/benyanyi/okhttp/DownloadRequest.java → okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/DownloadRequest.java

@@ -1,15 +1,16 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.deprecated;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 
 import com.benyanyi.okhttp.listener.OnDownloadListener;
+import com.benyanyi.okhttp.util.FormatUtil;
 
 /**
  * @author myLove
  */
 
-public class DownloadRequest {
+class DownloadRequest {
     @SuppressLint("StaticFieldLeak")
     private static DownloadRequest instance;
     private static String url;
@@ -34,7 +35,7 @@ public class DownloadRequest {
      * @param onDownloadListener 监听
      */
     @Deprecated
-    public void download(String filePath, OnDownloadListener onDownloadListener) {
+    void download(String filePath, OnDownloadListener onDownloadListener) {
         //saveDir判断不能为空
         if (FormatUtil.isEmpty(filePath)) {
             throw new NullPointerException("filePath is the SDCard directory of the downloaded file, cannot be empty.");
@@ -48,7 +49,7 @@ public class DownloadRequest {
      * @param onDownloadListener 监听
      */
     @Deprecated
-    public void download(String filePath, String fileName, OnDownloadListener onDownloadListener) {
+    void download(String filePath, String fileName, OnDownloadListener onDownloadListener) {
         //saveDir判断不能为空
         if (FormatUtil.isEmpty(filePath)) {
             throw new NullPointerException("filePath is the SDCard directory of the downloaded file, cannot be empty.");

+ 3 - 1
okhttplib/src/main/java/com/benyanyi/okhttp/FileUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/deprecated/FileUtil.java

@@ -1,9 +1,11 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.deprecated;
 
 import android.graphics.Bitmap;
 import android.os.Environment;
 import android.support.annotation.NonNull;
 
+import com.benyanyi.okhttp.util.FormatUtil;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;

+ 2 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/download/FileUtil.java

@@ -4,6 +4,8 @@ import android.graphics.Bitmap;
 import android.os.Environment;
 import android.support.annotation.NonNull;
 
+import com.benyanyi.okhttp.util.FormatUtil;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;

+ 0 - 37
okhttplib/src/main/java/com/benyanyi/okhttp/download/FormatUtil.java

@@ -1,37 +0,0 @@
-package com.benyanyi.okhttp.download;
-
-import java.util.Map;
-
-/**
- * 字符串工具类
- */
-class FormatUtil {
-
-    /**
-     * 判断字符串是否为空
-     *
-     * @param str
-     * @return true 不为空, false 为空
-     */
-    static boolean isNotEmpty(String str) {
-        return str != null && !"null".equals(str) && str.trim().length() != 0;
-    }
-
-    /**
-     * 判断字符串是否为空
-     *
-     * @param str
-     * @return true 为空,false 不为空
-     */
-    static boolean isEmpty(String str) {
-        return str == null || "null".equals(str) || str.trim().length() == 0;
-    }
-
-    /**
-     * 判断MAP是否为空
-     */
-    static <K, V> boolean isMapNotEmpty(Map<K, V> map) {
-        return map != null && map.size() > 0;
-    }
-
-}

+ 0 - 18
okhttplib/src/main/java/com/benyanyi/okhttp/listener/OnOkHttpCallBack.java

@@ -1,18 +0,0 @@
-package com.benyanyi.okhttp.listener;
-
-import okhttp3.Request;
-
-/**
- * @author BenYanYi
- * @date 2018/9/28 15:36
- * @email ben@yanyi.red
- * @overview
- */
-public interface OnOkHttpCallBack extends OnOkHttpListener {
-    /**
-     * 设置Request
-     * @param url
-     * @return
-     */
-    Request setRequest(String url);
-}

+ 165 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/type/CallType.java

@@ -0,0 +1,165 @@
+package com.benyanyi.okhttp.type;
+
+import android.content.Context;
+
+import com.benyanyi.okhttp.config.Client;
+import com.benyanyi.okhttp.call.HttpCall;
+import com.benyanyi.okhttp.call.RequestConfig;
+import com.benyanyi.okhttp.util.FormatUtil;
+import com.benyanyi.okhttp.util.OkHttpLog;
+import com.google.gson.Gson;
+
+import java.io.File;
+import java.util.Map;
+
+import okhttp3.FormBody;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 16:02
+ * @email ben@yanyi.red
+ * @overview
+ */
+public class CallType implements RequestType {
+
+    private Context context;
+    private boolean isCache;
+    private String url;
+    private String mCacheName;
+    private Request request;
+
+    public CallType(Context context, String url, boolean isCache) {
+        this.context = context;
+        this.url = url;
+        this.isCache = isCache;
+        this.mCacheName = url;
+    }
+
+    @Override
+    public RequestConfig getText(Map<Object, Object> map) {
+        StringBuilder str = new StringBuilder(url);
+        if (FormatUtil.isMapNotEmpty(map)) {
+            mCacheName = mCacheName + map.toString();
+            str.append("?");
+            for (Map.Entry<Object, Object> entry : map.entrySet()) {
+                str.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
+            }
+            str = new StringBuilder(str.substring(0, str.length() - 1));
+        }
+        OkHttpLog.d(str);
+        request = new Request.Builder()
+                .url(str.toString())
+                .get()
+                .build();
+        return send();
+    }
+
+    @Override
+    public RequestConfig postText(Map<Object, Object> map) {
+        FormBody.Builder builder = new FormBody.Builder();
+        if (FormatUtil.isMapNotEmpty(map)) {
+            mCacheName = mCacheName + map.toString();
+            for (Map.Entry<Object, Object> entry : map.entrySet()) {
+                builder.add(entry.getKey().toString(), entry.getValue().toString());
+            }
+        }
+        FormBody build = builder.build();
+        request = new Request.Builder()
+                .url(url)
+                .post(build)
+                .build();
+        return send();
+    }
+
+    @Override
+    public RequestConfig postJson(Map<Object, Object> map) {
+        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
+        if (FormatUtil.isMapNotEmpty(map)) {
+            mCacheName = mCacheName + map.toString();
+            RequestBody requestBody = RequestBody.create(mediaType, new Gson().toJson(map));
+            request = new Request.Builder()
+                    .url(url)
+                    .addHeader("content-type", "application/json")
+                    .post(requestBody)
+                    .build();
+        } else {
+            request = new Request.Builder()
+                    .url(url)
+                    .post(new FormBody.Builder().build())
+                    .build();
+        }
+        return send();
+    }
+
+    @Override
+    public RequestConfig postJson(String string) {
+        MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
+        if (FormatUtil.isNotEmpty(string)) {
+            mCacheName = mCacheName + string;
+            RequestBody requestBody = RequestBody.create(mediaType, string);
+            request = new Request.Builder()
+                    .url(url)
+                    .addHeader("content-type", "application/json")
+                    .post(requestBody)
+                    .build();
+        } else {
+            request = new Request.Builder()
+                    .url(url)
+                    .post(new FormBody.Builder().build())
+                    .build();
+        }
+        return send();
+    }
+
+    @Override
+    public RequestConfig xml(String xml) {
+        String str = xml;
+        MediaType mediaType = MediaType.parse("text/xml; charset=UTF-8");
+        if (FormatUtil.isNotEmpty(str)) {
+            mCacheName = mCacheName + str;
+        } else {
+            str = "";
+        }
+        request = new Request.Builder()
+                .url(url)
+                .post(RequestBody.create(mediaType, str))
+                .build();
+        return send();
+    }
+
+    @Override
+    public RequestConfig file(Map<Object, Object> map) {
+        MultipartBody.Builder builder = new MultipartBody.Builder()
+                .setType(MultipartBody.FORM);
+        if (FormatUtil.isMapNotEmpty(map)) {
+            for (Map.Entry<Object, Object> entry : map.entrySet()) {
+                File file = new File(entry.getValue().toString());
+                int indexOf = entry.getValue().toString().indexOf("/");
+                RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file);
+                String fileName = entry.getKey().toString().substring(indexOf + 1);
+                builder.addFormDataPart(entry.getKey().toString(), fileName, requestBody);
+            }
+        }
+        MultipartBody multipartBody = builder.build();
+        request = new Request.Builder()
+                .url(url)
+                .post(multipartBody)
+                .build();
+        return send();
+    }
+
+    private RequestConfig send() {
+        return new HttpCall.Builder()
+                .setCache(isCache)
+                .setCacheUrl(mCacheName)
+                .setContext(context)
+                .setHttpClient(Client.getClient(context, isCache))
+                .setRequest(request)
+                .builder();
+    }
+
+}

+ 27 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/type/RequestType.java

@@ -0,0 +1,27 @@
+package com.benyanyi.okhttp.type;
+
+import com.benyanyi.okhttp.call.RequestConfig;
+
+import java.util.Map;
+
+/**
+ * @author YanYi
+ * @date 2019-08-12 16:09
+ * @email ben@yanyi.red
+ * @overview
+ */
+public interface RequestType {
+
+    RequestConfig getText(Map<Object, Object> map);
+
+    RequestConfig postText(Map<Object, Object> map);
+
+    RequestConfig postJson(Map<Object, Object> map);
+
+    RequestConfig postJson(String string);
+
+    RequestConfig xml(String xml);
+
+    RequestConfig file(Map<Object, Object> map);
+
+}

+ 5 - 5
okhttplib/src/main/java/com/benyanyi/okhttp/CacheUtils.java → okhttplib/src/main/java/com/benyanyi/okhttp/util/CacheUtils.java

@@ -1,4 +1,4 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.util;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
@@ -15,7 +15,7 @@ import java.io.OutputStreamWriter;
  * @author myLove
  */
 
-class CacheUtils {
+public final class CacheUtils {
     private static File realFile;
     @SuppressLint("StaticFieldLeak")
     private static Context mContext;
@@ -41,7 +41,7 @@ class CacheUtils {
      * @param url  文件名
      * @param json
      */
-    void setCacheToLocalJson(String url, String json) {
+    public void setCacheToLocalJson(String url, String json) {
         String urlMD5 = Md5keyUtil.newInstance().getKeyBeanOfStr(url);
         String path = realFile.getAbsolutePath() + "/" + urlMD5;
         try {
@@ -68,8 +68,8 @@ class CacheUtils {
      * @param url
      * @return
      */
-    String getCacheToLocalJson(String url) {
-        StringBuffer sb = new StringBuffer();
+    public String getCacheToLocalJson(String url) {
+        StringBuilder sb = new StringBuilder();
         String urlMD5 = Md5keyUtil.newInstance().getKeyBeanOfStr(url);
         // 创建缓存文件夹
         File file = new File(realFile, urlMD5);

+ 5 - 5
okhttplib/src/main/java/com/benyanyi/okhttp/FormatUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/util/FormatUtil.java

@@ -1,11 +1,11 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.util;
 
 import java.util.Map;
 
 /**
  * 字符串工具类
  */
-class FormatUtil {
+public final class FormatUtil {
 
     /**
      * 判断字符串是否为空
@@ -13,7 +13,7 @@ class FormatUtil {
      * @param str
      * @return true 不为空, false 为空
      */
-    static boolean isNotEmpty(String str) {
+    public static boolean isNotEmpty(String str) {
         return str != null && !"null".equals(str) && str.trim().length() != 0;
     }
 
@@ -23,14 +23,14 @@ class FormatUtil {
      * @param str
      * @return true 为空,false 不为空
      */
-    static boolean isEmpty(String str) {
+    public static boolean isEmpty(String str) {
         return str == null || "null".equals(str) || str.trim().length() == 0;
     }
 
     /**
      * 判断MAP是否为空
      */
-    static <K, V> boolean isMapNotEmpty(Map<K, V> map) {
+    public static <K, V> boolean isMapNotEmpty(Map<K, V> map) {
         return map != null && map.size() > 0;
     }
 

+ 3 - 3
okhttplib/src/main/java/com/benyanyi/okhttp/Internet.java → okhttplib/src/main/java/com/benyanyi/okhttp/util/Internet.java

@@ -1,4 +1,4 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.util;
 
 import android.content.Context;
 
@@ -7,11 +7,11 @@ import android.content.Context;
  * @author myLove
  */
 
-class Internet {
+public class Internet {
     /**
      * 判断网络
      */
-    static InternetBean ifInternet(Context mContext) {
+    public static InternetBean ifInternet(Context mContext) {
         InternetBean msg = new InternetBean();
         switch (InternetUtil.getConnectedType(mContext)) {
             case -1:

+ 6 - 6
okhttplib/src/main/java/com/benyanyi/okhttp/InternetBean.java → okhttplib/src/main/java/com/benyanyi/okhttp/util/InternetBean.java

@@ -1,26 +1,26 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.util;
 
 /**
  * @author myLove
  */
 
-class InternetBean {
+public class InternetBean {
     private boolean status;
     private String msg;
 
-    boolean getStatus() {
+    public boolean getStatus() {
         return status;
     }
 
-     void setStatus(boolean status) {
+    void setStatus(boolean status) {
         this.status = status;
     }
 
-     String getMsg() {
+    public String getMsg() {
         return msg;
     }
 
-     void setMsg(String msg) {
+    void setMsg(String msg) {
         this.msg = msg;
     }
 }

+ 8 - 8
okhttplib/src/main/java/com/benyanyi/okhttp/InternetUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/util/InternetUtil.java

@@ -1,4 +1,4 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.util;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
@@ -11,11 +11,11 @@ import android.net.wifi.WifiManager;
  * @author myLove
  */
 
-class InternetUtil {
+public class InternetUtil {
     /**
      * 判断是否有网络连接
      */
-    static boolean isNetWorkConnected(Context context) {
+    public static boolean isNetWorkConnected(Context context) {
         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = null;
         if (connectivityManager != null) {
@@ -29,7 +29,7 @@ class InternetUtil {
      * <p>
      * 测试没用
      */
-    static boolean isWifiConnected(Context context) {
+    public static boolean isWifiConnected(Context context) {
         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = null;
         if (connectivityManager != null) {
@@ -43,7 +43,7 @@ class InternetUtil {
      * <p>
      * 测试没用
      */
-    static boolean isMobileConnected(Context context) {
+    public static boolean isMobileConnected(Context context) {
         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = null;
         if (connectivityManager != null) {
@@ -55,7 +55,7 @@ class InternetUtil {
     /**
      * 获取当前网络连接的类型信息
      */
-    static int getConnectedType(Context context) {
+    public static int getConnectedType(Context context) {
         int i = -1;
         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
@@ -70,7 +70,7 @@ class InternetUtil {
     /**
      * 获取当前ip地址
      */
-    static String getLocalIpAddress(Context context) {
+    public static String getLocalIpAddress(Context context) {
         try {
             WifiManager wifiManager = (WifiManager) context.getApplicationContext()
                     .getSystemService(Context.WIFI_SERVICE);
@@ -87,7 +87,7 @@ class InternetUtil {
      * 将ip的整数形式转换成ip形式
      */
     private static String int2ip(int ipInt) {
-        return String.valueOf(ipInt & 0xFF) + "." +
+        return (ipInt & 0xFF) + "." +
                 ((ipInt >> 8) & 0xFF) + "." +
                 ((ipInt >> 16) & 0xFF) + "." +
                 ((ipInt >> 24) & 0xFF);

+ 1 - 1
okhttplib/src/main/java/com/benyanyi/okhttp/Md5keyUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/util/Md5keyUtil.java

@@ -1,4 +1,4 @@
-package com.benyanyi.okhttp;
+package com.benyanyi.okhttp.util;
 
 /**
  * @author myLove

+ 38 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/util/OkHttpLog.java

@@ -0,0 +1,38 @@
+package com.benyanyi.okhttp.util;
+
+import android.util.Log;
+
+/**
+ * @author myLove
+ */
+public class OkHttpLog {
+
+    private static boolean isLOG = true;
+
+    private static String TAG = "OkHttpUtil--->>>>";
+
+    public static void init(String tag) {
+        TAG = tag;
+    }
+
+    public static void init(Boolean isShow) {
+        isLOG = isShow;
+    }
+
+    public static void init(Boolean isShow, String tag) {
+        isLOG = isShow;
+        TAG = tag;
+    }
+
+    public static void d(Object object) {
+        if (isLOG) {
+            Log.d(TAG, object.toString());
+        }
+    }
+
+    public static void e(Object object) {
+        if (isLOG) {
+            Log.e(TAG, object.toString());
+        }
+    }
+}