Browse Source

优化代码,修改包名

yanyi 5 years ago
parent
commit
b4e5f740ab
50 changed files with 896 additions and 648 deletions
  1. 5 0
      .gitignore
  2. 1 1
      app/src/androidTest/java/com/benyanyi/okhttp/ExampleInstrumentedTest.java
  3. 3 3
      app/src/main/AndroidManifest.xml
  4. 1 1
      app/src/main/java/com/benyanyi/okhttp/AppContext.java
  5. 8 7
      app/src/main/java/com/benyanyi/okhttp/DownloadActivity.java
  6. 3 2
      app/src/main/java/com/benyanyi/okhttp/MainActivity.java
  7. 1 1
      app/src/test/java/com/benyanyi/okhttp/ExampleUnitTest.java
  8. 1 1
      okhttplib/src/androidTest/java/com/benyanyi/okhttp/ExampleInstrumentedTest.java
  9. 10 10
      okhttplib/src/main/java/com/benyanyi/okhttp/AutoIsRequest.java
  10. 10 10
      okhttplib/src/main/java/com/benyanyi/okhttp/AutoRequest.java
  11. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/Cache.java
  12. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/CacheInterceptor.java
  13. 3 3
      okhttplib/src/main/java/com/benyanyi/okhttp/CacheUtils.java
  14. 16 0
      okhttplib/src/main/java/com/benyanyi/okhttp/CallType.java
  15. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/DownloadBean.java
  16. 81 64
      okhttplib/src/main/java/com/benyanyi/okhttp/DownloadObservable.java
  17. 2 2
      okhttplib/src/main/java/com/benyanyi/okhttp/DownloadRequest.java
  18. 8 5
      okhttplib/src/main/java/com/benyanyi/okhttp/FileUtil.java
  19. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/FormatUtil.java
  20. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/Internet.java
  21. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/InternetBean.java
  22. 7 7
      okhttplib/src/main/java/com/benyanyi/okhttp/InternetUtil.java
  23. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/LogHelper.java
  24. 414 0
      okhttplib/src/main/java/com/benyanyi/okhttp/Md5keyUtil.java
  25. 12 8
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequest.java
  26. 16 11
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequests.java
  27. 12 9
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequest.java
  28. 18 13
      okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequests.java
  29. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpInfo.java
  30. 3 3
      okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpUtil.java
  31. 28 0
      okhttplib/src/main/java/com/benyanyi/okhttp/RequestType.java
  32. 63 0
      okhttplib/src/main/java/com/benyanyi/okhttp/SslConfig.java
  33. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/TrustAllCerts.java
  34. 12 12
      okhttplib/src/main/java/com/benyanyi/okhttp/XmlRequest.java
  35. 7 3
      okhttplib/src/main/java/com/benyanyi/okhttp/download/BaseDownLoadObserver.java
  36. 5 2
      okhttplib/src/main/java/com/benyanyi/okhttp/download/DownloadInfo.java
  37. 41 19
      okhttplib/src/main/java/com/benyanyi/okhttp/download/DownloadManager.java
  38. 9 6
      okhttplib/src/main/java/com/benyanyi/okhttp/download/FileUtil.java
  39. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/download/FormatUtil.java
  40. 3 3
      okhttplib/src/main/java/com/benyanyi/okhttp/download/IoUtil.java
  41. 48 26
      okhttplib/src/main/java/com/benyanyi/okhttp/download/NotificationUtil.java
  42. 1 1
      okhttplib/src/main/java/com/benyanyi/okhttp/listener/OnDownloadListener.java
  43. 6 1
      okhttplib/src/main/java/com/benyanyi/okhttp/listener/OnOkHttpCallBack.java
  44. 27 0
      okhttplib/src/main/java/com/benyanyi/okhttp/listener/OnOkHttpListener.java
  45. 0 10
      okhttplib/src/main/java/com/mylove/okhttp/CallType.java
  46. 0 336
      okhttplib/src/main/java/com/mylove/okhttp/MD5keyUtil.java
  47. 0 13
      okhttplib/src/main/java/com/mylove/okhttp/RequestType.java
  48. 0 31
      okhttplib/src/main/java/com/mylove/okhttp/SSLConfig.java
  49. 0 13
      okhttplib/src/main/java/com/mylove/okhttp/listener/OnOkHttpListener.java
  50. 1 1
      okhttplib/src/test/java/com/benyanyi/okhttp/ExampleUnitTest.java

+ 5 - 0
.gitignore

@@ -1,5 +1,7 @@
 *.iml
 .gradle
+.idea
+/.idea
 /local.properties
 /.idea/workspace.xml
 /.idea/libraries
@@ -7,3 +9,6 @@
 /build
 /captures
 .externalNativeBuild
+.idea/caches/
+.idea/encodings.xml
+.idea/inspectionProfiles/

+ 1 - 1
app/src/androidTest/java/com/mylove/okhttp/ExampleInstrumentedTest.java → app/src/androidTest/java/com/benyanyi/okhttp/ExampleInstrumentedTest.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.content.Context;
 import android.support.test.InstrumentationRegistry;

+ 3 - 3
app/src/main/AndroidManifest.xml

@@ -9,7 +9,7 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
     <application
-        android:name=".AppContext"
+        android:name="com.benyanyi.okhttp.AppContext"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
@@ -17,13 +17,13 @@
         android:supportsRtl="true"
         android:theme="@style/AppTheme"
         tools:ignore="GoogleAppIndexingWarning">
-        <activity android:name=".MainActivity">
+        <activity android:name="com.benyanyi.okhttp.MainActivity">
             <intent-filter>
                 <category android:name="android.intent.category.LAUNCHER" />
                 <action android:name="android.intent.action.MAIN" />
             </intent-filter>
         </activity>
-        <activity android:name=".DownloadActivity">
+        <activity android:name="com.benyanyi.okhttp.DownloadActivity">
 
         </activity>
         <!-- 定义FileProvider -->

+ 1 - 1
app/src/main/java/com/mylove/okhttp/AppContext.java → app/src/main/java/com/benyanyi/okhttp/AppContext.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.app.Application;
 import android.content.Context;

+ 8 - 7
app/src/main/java/com/mylove/okhttp/DownloadActivity.java → app/src/main/java/com/benyanyi/okhttp/DownloadActivity.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.content.Context;
 import android.os.Bundle;
@@ -8,10 +8,11 @@ import android.view.View;
 import android.widget.Button;
 import android.widget.ProgressBar;
 
+import com.benyanyi.okhttp.download.BaseDownLoadObserver;
+import com.benyanyi.okhttp.download.DownloadInfo;
+import com.benyanyi.okhttp.download.DownloadManager;
 import com.mylove.loglib.JLog;
-import com.mylove.okhttp.download.DownLoadObserver;
-import com.mylove.okhttp.download.DownloadInfo;
-import com.mylove.okhttp.download.DownloadManager;
+import com.mylove.okhttp.R;
 
 /**
  * @author BenYanYi
@@ -59,7 +60,7 @@ public class DownloadActivity extends AppCompatActivity implements View.OnClickL
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.main_btn_down1:
-                DownloadManager.getInstance(mContext).download(url1, new DownLoadObserver() {
+                DownloadManager.getInstance(mContext).download(url1, new BaseDownLoadObserver() {
                     @Override
                     public void onNext(DownloadInfo downloadInfo) {
                         super.onNext(downloadInfo);
@@ -75,7 +76,7 @@ public class DownloadActivity extends AppCompatActivity implements View.OnClickL
                 });
                 break;
             case R.id.main_btn_down2:
-                DownloadManager.getInstance(mContext).download(url2, new DownLoadObserver() {
+                DownloadManager.getInstance(mContext).download(url2, new BaseDownLoadObserver() {
                     @Override
                     public void onNext(DownloadInfo downloadInfo) {
                         JLog.v(downloadInfo.getProgress());
@@ -93,7 +94,7 @@ public class DownloadActivity extends AppCompatActivity implements View.OnClickL
                 });
                 break;
             case R.id.main_btn_down3:
-                DownloadManager.getInstance(mContext).download(url3, new DownLoadObserver() {
+                DownloadManager.getInstance(mContext).download(url3, new BaseDownLoadObserver() {
                     @Override
                     public void onNext(DownloadInfo downloadInfo) {
                         JLog.v(downloadInfo.getProgress());

+ 3 - 2
app/src/main/java/com/mylove/okhttp/MainActivity.java → app/src/main/java/com/benyanyi/okhttp/MainActivity.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.content.Intent;
 import android.os.Bundle;
@@ -7,7 +7,8 @@ import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
 
 import com.mylove.loglib.JLog;
-import com.mylove.okhttp.listener.OnOkHttpListener;
+import com.mylove.okhttp.R;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
 import com.yanyi.permissionlib.PermissionHelper;
 import com.yanyi.permissionlib.PermissionType;
 

+ 1 - 1
okhttplib/src/test/java/com/mylove/okhttp/ExampleUnitTest.java → app/src/test/java/com/benyanyi/okhttp/ExampleUnitTest.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import org.junit.Test;
 

+ 1 - 1
okhttplib/src/androidTest/java/com/mylove/okhttp/ExampleInstrumentedTest.java → okhttplib/src/androidTest/java/com/benyanyi/okhttp/ExampleInstrumentedTest.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.content.Context;
 import android.support.test.InstrumentationRegistry;

+ 10 - 10
okhttplib/src/main/java/com/mylove/okhttp/AutoIsRequest.java → okhttplib/src/main/java/com/benyanyi/okhttp/AutoIsRequest.java

@@ -1,9 +1,9 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 
-import com.mylove.okhttp.listener.OnOkHttpCallBack;
+import com.benyanyi.okhttp.listener.OnOkHttpCallBack;
 
 /**
  * @author myLove
@@ -29,23 +29,23 @@ public class AutoIsRequest {
         return instance;
     }
 
-    public void sync(OnOkHttpCallBack OnOkHttpCallBack) {
-        ObservableIsRequest.getInstance(mContext, CallType.SYNC).request(url, OnOkHttpCallBack);
+    public void sync(OnOkHttpCallBack onOkHttpCallBack) {
+        ObservableIsRequest.getInstance(mContext, CallType.SYNC).request(url, onOkHttpCallBack);
     }
 
-    public <T> void sync(Class<T> tClass, OnOkHttpCallBack OnOkHttpCallBack) {
+    public <T> void sync(Class<T> tClass, OnOkHttpCallBack onOkHttpCallBack) {
         ObservableIsRequests request = ObservableIsRequests.getInstance(mContext, CallType.SYNC);
         request.tClass = tClass;
-        request.request(url, OnOkHttpCallBack);
+        request.request(url, onOkHttpCallBack);
     }
 
-    public void async(OnOkHttpCallBack OnOkHttpCallBack) {
-        ObservableIsRequest.getInstance(mContext, CallType.ASYNC).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) {
+    public <T> void async(Class<T> tClass, OnOkHttpCallBack onOkHttpCallBack) {
         ObservableIsRequests request = ObservableIsRequests.getInstance(mContext, CallType.ASYNC);
         request.tClass = tClass;
-        request.request(url, OnOkHttpCallBack);
+        request.request(url, onOkHttpCallBack);
     }
 }

+ 10 - 10
okhttplib/src/main/java/com/mylove/okhttp/AutoRequest.java → okhttplib/src/main/java/com/benyanyi/okhttp/AutoRequest.java

@@ -1,9 +1,9 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 
-import com.mylove.okhttp.listener.OnOkHttpListener;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
 
 import java.util.Map;
 
@@ -33,23 +33,23 @@ public class AutoRequest {
         return instance;
     }
 
-    public void sync(Map<Object, Object> oMap, OnOkHttpListener OnOkHttpListener) {
-        ObservableRequest.getInstance(mContext, requestType, CallType.SYNC).request(url, oMap, OnOkHttpListener);
+    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 OnOkHttpListener) {
+    public <T> void sync(Map<Object, Object> oMap, Class<T> tClass, OnOkHttpListener onOkHttpListener) {
         ObservableRequests request = ObservableRequests.getInstance(mContext, requestType, CallType.SYNC);
         request.tClass = tClass;
-        request.request(url, oMap, OnOkHttpListener);
+        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 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 OnOkHttpListener) {
+    public <T> void async(Map<Object, Object> oMap, Class<T> tClass, OnOkHttpListener onOkHttpListener) {
         ObservableRequests request = ObservableRequests.getInstance(mContext, requestType, CallType.ASYNC);
         request.tClass = tClass;
-        request.request(url, oMap, OnOkHttpListener);
+        request.request(url, oMap, onOkHttpListener);
     }
 }

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/Cache.java → okhttplib/src/main/java/com/benyanyi/okhttp/Cache.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.content.Context;
 import android.support.annotation.NonNull;

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/CacheInterceptor.java → okhttplib/src/main/java/com/benyanyi/okhttp/CacheInterceptor.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import java.io.IOException;
 

+ 3 - 3
okhttplib/src/main/java/com/mylove/okhttp/CacheUtils.java → okhttplib/src/main/java/com/benyanyi/okhttp/CacheUtils.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
@@ -42,7 +42,7 @@ class CacheUtils {
      * @param json
      */
     void setCacheToLocalJson(String url, String json) {
-        String urlMD5 = MD5keyUtil.newInstance().getkeyBeanofStr(url);
+        String urlMD5 = Md5keyUtil.newInstance().getKeyBeanOfStr(url);
         String path = realFile.getAbsolutePath() + "/" + urlMD5;
         try {
             File file = new File(path);
@@ -70,7 +70,7 @@ class CacheUtils {
      */
     String getCacheToLocalJson(String url) {
         StringBuffer sb = new StringBuffer();
-        String urlMD5 = MD5keyUtil.newInstance().getkeyBeanofStr(url);
+        String urlMD5 = Md5keyUtil.newInstance().getKeyBeanOfStr(url);
         // 创建缓存文件夹
         File file = new File(realFile, urlMD5);
         if (file.exists()) {

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

@@ -0,0 +1,16 @@
+package com.benyanyi.okhttp;
+
+/**
+ * @author myLove
+ */
+
+enum CallType {
+    /**
+     * 同步
+     */
+    SYNC,
+    /**
+     * 异步
+     */
+    ASYNC
+}

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/DownloadBean.java → okhttplib/src/main/java/com/benyanyi/okhttp/DownloadBean.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 /**
  * @author BenYanYi

+ 81 - 64
okhttplib/src/main/java/com/mylove/okhttp/DownloadObservable.java → okhttplib/src/main/java/com/benyanyi/okhttp/DownloadObservable.java

@@ -1,10 +1,10 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.support.annotation.NonNull;
 
-import com.mylove.okhttp.listener.OnDownloadListener;
+import com.benyanyi.okhttp.listener.OnDownloadListener;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -47,6 +47,7 @@ class DownloadObservable {
                 if (instance == null) {
                     instance = new DownloadObservable();
                     OkHttpClient httpClient = new OkHttpClient();
+
                     okHttpClient = httpClient.newBuilder()
                             .addNetworkInterceptor(new CacheInterceptor())
                             .addInterceptor(Cache.HTTP_LOGGING_INTERCEPTOR)
@@ -54,7 +55,8 @@ class DownloadObservable {
                             .connectTimeout(30, TimeUnit.SECONDS)
                             .readTimeout(30, TimeUnit.SECONDS)
                             .writeTimeout(30, TimeUnit.SECONDS)
-                            .sslSocketFactory(SSLConfig.createSSLSocketFactory())//支持HTTPS请求,跳过证书验证
+                            //支持HTTPS请求,跳过证书验证
+                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
                             .build();
                 }
             }
@@ -89,15 +91,17 @@ class DownloadObservable {
 
                     @Override
                     public void onError(Throwable e) {
-                        if (OkHttpInfo.isLOG)
+                        if (OkHttpInfo.isLOG) {
                             LogHelper.e(e.getMessage());
+                        }
                         onDownloadListener.onFailure(e);
                     }
 
                     @Override
                     public void onComplete() {
-                        if (OkHttpInfo.isLOG)
+                        if (OkHttpInfo.isLOG) {
                             LogHelper.v("*****");
+                        }
                         onDownloadListener.onCompleted();
                     }
                 });
@@ -132,74 +136,87 @@ class DownloadObservable {
         call.enqueue(new Callback() {
             @Override
             public void onFailure(@NonNull Call call, @NonNull IOException e) {
-                if (OkHttpInfo.isLOG)
+                if (OkHttpInfo.isLOG) {
                     LogHelper.e(e.getMessage());
+                }
                 subscriber.onError(e);
                 subscriber.onComplete();
             }
 
             @Override
             public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
-                DownloadBean bean = new DownloadBean();
-                InputStream is = null;
-                byte[] buf = new byte[2048];
-                int len = 0;
-                FileOutputStream fos = null;
-                // 储存下载文件的目录
-                String savePath = FileUtil.isExistDir(filePath);
-                try {
-                    is = response.body().byteStream();
-                    long total = response.body().contentLength();
-                    File file;
-                    if (FormatUtil.isEmpty(fileName)) {
-                        file = new File(savePath, FileUtil.getNameFromUrl(url));
-                    } else {
-                        file = new File(savePath, fileName);
-                    }
-                    bean.filePath = file.getAbsolutePath();
-                    if (OkHttpInfo.isLOG)
-                        LogHelper.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);
-                        // 下载中
-                        subscriber.onNext(bean);
-                    }
-                    fos.flush();
-                    // 下载完成
-                    bean.status = 1;
-                    if (OkHttpInfo.isLOG)
-                        LogHelper.d(bean);
-                    subscriber.onNext(bean);
-                    subscriber.onComplete();
-                } catch (Exception e) {
-                    if (OkHttpInfo.isLOG)
-                        LogHelper.e(e.getMessage());
-                    subscriber.onError(e);
-                    subscriber.onComplete();
-                } finally {
-                    try {
-                        if (is != null)
-                            is.close();
-                    } catch (IOException e) {
-                        if (OkHttpInfo.isLOG)
-                            LogHelper.e(e.getMessage());
-                    }
-                    try {
-                        if (fos != null)
-                            fos.close();
-                    } catch (IOException e) {
-                        if (OkHttpInfo.isLOG)
-                            LogHelper.e(e.getMessage());
-                    }
-                }
+                callResponse(url, response, subscriber);
             }
         });
     }
 
+    private void callResponse(String url, Response response, ObservableEmitter<DownloadBean> subscriber) throws IOException {
+        DownloadBean bean = new DownloadBean();
+        InputStream is = null;
+        byte[] buf = new byte[2048];
+        int len = 0;
+        FileOutputStream fos = null;
+        // 储存下载文件的目录
+        String savePath = FileUtil.isExistDir(filePath);
+        try {
+            is = response.body().byteStream();
+            long total = response.body().contentLength();
+            File file;
+            if (FormatUtil.isEmpty(fileName)) {
+                file = new File(savePath, FileUtil.getNameFromUrl(url));
+            } else {
+                file = new File(savePath, fileName);
+            }
+            bean.filePath = file.getAbsolutePath();
+            if (OkHttpInfo.isLOG) {
+                LogHelper.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);
+                }
+                // 下载中
+                subscriber.onNext(bean);
+            }
+            fos.flush();
+            // 下载完成
+            bean.status = 1;
+            if (OkHttpInfo.isLOG) {
+                LogHelper.d(bean);
+            }
+            subscriber.onNext(bean);
+            subscriber.onComplete();
+        } catch (Exception e) {
+            if (OkHttpInfo.isLOG) {
+                LogHelper.e(e.getMessage());
+            }
+            subscriber.onError(e);
+            subscriber.onComplete();
+        } finally {
+            try {
+                if (is != null) {
+                    is.close();
+                }
+            } catch (IOException e) {
+                if (OkHttpInfo.isLOG) {
+                    LogHelper.e(e.getMessage());
+                }
+            }
+            try {
+                if (fos != null) {
+                    fos.close();
+                }
+            } catch (IOException e) {
+                if (OkHttpInfo.isLOG) {
+                    LogHelper.e(e.getMessage());
+                }
+            }
+        }
+    }
+
 }

+ 2 - 2
okhttplib/src/main/java/com/mylove/okhttp/DownloadRequest.java → okhttplib/src/main/java/com/benyanyi/okhttp/DownloadRequest.java

@@ -1,9 +1,9 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 
-import com.mylove.okhttp.listener.OnDownloadListener;
+import com.benyanyi.okhttp.listener.OnDownloadListener;
 
 /**
  * @author myLove

+ 8 - 5
okhttplib/src/main/java/com/mylove/okhttp/download/FileUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/FileUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.download;
+package com.benyanyi.okhttp;
 
 import android.graphics.Bitmap;
 import android.os.Environment;
@@ -39,7 +39,7 @@ class FileUtil {
             }
             FileOutputStream fos = new FileOutputStream(file);
             String substring = path.substring(path.length() - 3, path.length());
-            if (substring.equals("png")) {
+            if ("png".equals(substring)) {
                 bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
             } else {
                 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
@@ -55,9 +55,12 @@ class FileUtil {
     static String getSDPath() {
         File sdDir = null;
         boolean sdCardExist = Environment.getExternalStorageState()
-                .equals(Environment.MEDIA_MOUNTED); //判断sd卡是否存在
-        if (sdCardExist) {//判断sd卡是否存在
-            sdDir = Environment.getExternalStorageDirectory();//获取跟目录
+                //判断sd卡是否存在
+                .equals(Environment.MEDIA_MOUNTED);
+        //判断sd卡是否存在
+        if (sdCardExist) {
+            //获取跟目录
+            sdDir = Environment.getExternalStorageDirectory();
         }
         return sdDir.toString();
     }

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/FormatUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/FormatUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import java.util.Map;
 

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/Internet.java → okhttplib/src/main/java/com/benyanyi/okhttp/Internet.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.content.Context;
 

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/InternetBean.java → okhttplib/src/main/java/com/benyanyi/okhttp/InternetBean.java

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

+ 7 - 7
okhttplib/src/main/java/com/mylove/okhttp/InternetUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/InternetUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
@@ -21,7 +21,7 @@ class InternetUtil {
         if (connectivityManager != null) {
             networkInfo = connectivityManager.getActiveNetworkInfo();
         }
-        return networkInfo == null || !networkInfo.isAvailable();
+        return networkInfo == null || !networkInfo.isConnected();
     }
 
     /**
@@ -33,9 +33,9 @@ class InternetUtil {
         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = null;
         if (connectivityManager != null) {
-            networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+            networkInfo = connectivityManager.getActiveNetworkInfo();
         }
-        return networkInfo != null && networkInfo.isAvailable();
+        return networkInfo != null && networkInfo.isConnected();
     }
 
     /**
@@ -47,9 +47,9 @@ class InternetUtil {
         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = null;
         if (connectivityManager != null) {
-            networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
+            networkInfo = connectivityManager.getActiveNetworkInfo();
         }
-        return networkInfo != null && networkInfo.isAvailable();
+        return networkInfo != null && networkInfo.isConnected();
     }
 
     /**
@@ -60,7 +60,7 @@ class InternetUtil {
         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
         if (networkInfo != null) {
-            if (networkInfo.isAvailable()) {
+            if (networkInfo.isConnected()) {
                 i = networkInfo.getType();
             }
         }

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/LogHelper.java → okhttplib/src/main/java/com/benyanyi/okhttp/LogHelper.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.util.Log;
 

+ 414 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/Md5keyUtil.java

@@ -0,0 +1,414 @@
+package com.benyanyi.okhttp;
+
+/**
+ * @author myLove
+ */
+
+class Md5keyUtil {
+    /**
+     * 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的, 这里把它们实现成为static final是表示了只读,切能在同一个进程空间内的多个 Instance间共享
+     */
+    private static final int S11 = 7;
+
+    private static final int S12 = 12;
+
+    private static final int S13 = 17;
+
+    private static final int S14 = 22;
+
+    private static final int S21 = 5;
+
+    private static final int S22 = 9;
+
+    private static final int S23 = 14;
+
+    private static final int S24 = 20;
+
+    private static final int S31 = 4;
+
+    private static final int S32 = 11;
+
+    private static final int S33 = 16;
+
+    private static final int S34 = 23;
+
+    private static final int S41 = 6;
+
+    private static final int S42 = 10;
+
+    private static final int S43 = 15;
+
+    private static final int S44 = 21;
+
+    private static final byte[] PADDING = {-128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+    /**
+     * 下面的三个成员是keyBean计算过程中用到的3个核心数据,在原始的C实现中 被定义到keyBean_CTX结构中
+     * state (ABCD)
+     */
+    private static long[] state = new long[4];
+
+    /**
+     * number of bits, modulo 2^64 (lsb first)
+     */
+    private static long[] count = new long[2];
+
+    /**
+     * input buffer
+     */
+    private static byte[] buffer = new byte[64];
+
+    /**
+     * digestHexStr是keyBean的唯一一个公共成员,是最新一次计算结果的 16进制ASCII表示.
+     * digest,是最新一次计算结果的2进制内部表示,表示128bit的keyBean值.
+     */
+    private byte[] digest = new byte[16];
+
+    /**
+     * getKeyBeanOfStr是类keyBean最主要的公共方法,入口参数是你想要进行keyBean变换的字符串 返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的.
+     */
+    String getKeyBeanOfStr(String inBuf) {
+        keyBeanInit();
+        keyBeanUpdate(inBuf.getBytes(), inBuf.length());
+        keyBeanFinal();
+        StringBuilder digestHexStr = new StringBuilder();
+        int size = 16;
+        for (int i = 0; i < size; i++) {
+            digestHexStr.append(byteHEX(digest[i]));
+        }
+        return digestHexStr.toString();
+    }
+
+    private static Md5keyUtil mBean = null;
+
+    static Md5keyUtil newInstance() {
+        if (mBean == null) {
+            mBean = new Md5keyUtil();
+        }
+        keyBeanInit();
+        return mBean;
+    }
+
+
+    /**
+     * 这是keyBean这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数
+     */
+    private Md5keyUtil() {
+        keyBeanInit();
+        return;
+    }
+
+    /**
+     * keyBeanInit是一个初始化函数,初始化核心变量,装入标准的幻数
+     */
+    private static void keyBeanInit() {
+        count[0] = 0L;
+        count[1] = 0L;
+        // /* Load magic initialization constants.
+        state[0] = 0x67452301L;
+        state[1] = 0xefcdab89L;
+        state[2] = 0x98badcfeL;
+        state[3] = 0x10325476L;
+        return;
+    }
+
+    /**
+     * f, g, h ,i 是4个基本的keyBean函数,在原始的keyBean的C实现中,由于它们是 简单的位运算,可能出于效率的考虑把它们实现成了宏,在java中,我们把它们 实现成了private方法,名字保持了原来C中的。
+     */
+    private long f(long x, long y, long z) {
+        return (x & y) | ((~x) & z);
+    }
+
+    private long g(long x, long y, long z) {
+        return (x & z) | (y & (~z));
+    }
+
+    private long h(long x, long y, long z) {
+        return x ^ y ^ z;
+    }
+
+    private long i(long x, long y, long z) {
+        return y ^ (x | (~z));
+    }
+
+    /**
+     * ff,gg,HH和II将调用F,g,h,I进行近一步变换 ff, gg, hh, and ii transformations for rounds 1, 2, 3, and 4. Rotation is separate
+     * from addition to prevent recomputation.
+     */
+    private long ff(long a, long b, long c, long d, long x, long s, long ac) {
+        a += f(b, c, d) + x + ac;
+        a = ((int) a << s) | ((int) a >>> (32 - s));
+        a += b;
+        return a;
+    }
+
+    private long gg(long a, long b, long c, long d, long x, long s, long ac) {
+        a += g(b, c, d) + x + ac;
+        a = ((int) a << s) | ((int) a >>> (32 - s));
+        a += b;
+        return a;
+    }
+
+    private long hh(long a, long b, long c, long d, long x, long s, long ac) {
+        a += h(b, c, d) + x + ac;
+        a = ((int) a << s) | ((int) a >>> (32 - s));
+        a += b;
+        return a;
+    }
+
+    private long ii(long a, long b, long c, long d, long x, long s, long ac) {
+        a += i(b, c, d) + x + ac;
+        a = ((int) a << s) | ((int) a >>> (32 - s));
+        a += b;
+        return a;
+    }
+
+    /**
+     * keyBeanUpdate是keyBean的主计算过程,inbuf是要变换的字节串,inputlen是长度,这个 函数由getkeyBeanofStr调用,调用之前需要调用keyBeaninit,因此把它设计成private的
+     */
+    private void keyBeanUpdate(byte[] inbuf, int inputLen) {
+        int i, index, partLen;
+        byte[] block = new byte[64];
+        index = (int) (count[0] >>> 3) & 0x3F;
+        // /* Update number of bits */
+        int num1 = 3;
+        if ((count[0] += (inputLen << num1)) < (inputLen << num1)) {
+            count[1]++;
+        }
+        count[1] += (inputLen >>> 29);
+        partLen = 64 - index;
+        // Transform as many times as possible.
+        int num2 = 63;
+        int num3 = 64;
+        if (inputLen >= partLen) {
+            keyBeanMemcpy(buffer, inbuf, index, 0, partLen);
+            keyBeanTransform(buffer);
+            for (i = partLen; i + num2 < inputLen; i += num3) {
+                keyBeanMemcpy(block, inbuf, 0, i, 64);
+                keyBeanTransform(block);
+            }
+            index = 0;
+        } else {
+            i = 0;
+        }
+        // /* Buffer remaining input */
+        keyBeanMemcpy(buffer, inbuf, index, i, inputLen - i);
+    }
+
+    /**
+     * keyBeanFinal整理和填写输出结果
+     */
+    private void keyBeanFinal() {
+        byte[] bits = new byte[8];
+        int index, padLen;
+        // /* Save number of bits */
+        encode(bits, count, 8);
+        // /* Pad out to 56 mod 64.
+        index = (int) (count[0] >>> 3) & 0x3f;
+        padLen = (index < 56) ? (56 - index) : (120 - index);
+        keyBeanUpdate(PADDING, padLen);
+        // /* Append length (before padding) */
+        keyBeanUpdate(bits, 8);
+        // /* Store state in digest */
+        encode(digest, state, 16);
+    }
+
+    /**
+     * keyBeanMemcpy是一个内部使用的byte数组的块拷贝函数,从input的inpos开始把len长度的 字节拷贝到output的outpos位置开始
+     */
+    private void keyBeanMemcpy(byte[] output, byte[] input, int outpos, int inpos, int len) {
+        int i;
+        for (i = 0; i < len; i++) {
+            output[outpos + i] = input[inpos + i];
+        }
+    }
+
+    /**
+     * keyBeanTransform是keyBean核心变换程序,有keyBeanUpdate调用,block是分块的原始字节
+     */
+    private void keyBeanTransform(byte[] block) {
+        long a = state[0], b = state[1], c = state[2], d = state[3];
+        long[] x = new long[16];
+        decode(x, block, 64);
+        /* Round 1 */
+        /* 1 */
+        a = ff(a, b, c, d, x[0], S11, 0xd76aa478L);
+        /* 2 */
+        d = ff(d, a, b, c, x[1], S12, 0xe8c7b756L);
+        /* 3 */
+        c = ff(c, d, a, b, x[2], S13, 0x242070dbL);
+        /* 4 */
+        b = ff(b, c, d, a, x[3], S14, 0xc1bdceeeL);
+        /* 5 */
+        a = ff(a, b, c, d, x[4], S11, 0xf57c0fafL);
+        /* 6 */
+        d = ff(d, a, b, c, x[5], S12, 0x4787c62aL);
+        /* 7 */
+        c = ff(c, d, a, b, x[6], S13, 0xa8304613L);
+        /* 8 */
+        b = ff(b, c, d, a, x[7], S14, 0xfd469501L);
+        /* 9 */
+        a = ff(a, b, c, d, x[8], S11, 0x698098d8L);
+        /* 10 */
+        d = ff(d, a, b, c, x[9], S12, 0x8b44f7afL);
+        /* 11 */
+        c = ff(c, d, a, b, x[10], S13, 0xffff5bb1L);
+        /* 12 */
+        b = ff(b, c, d, a, x[11], S14, 0x895cd7beL);
+        /* 13 */
+        a = ff(a, b, c, d, x[12], S11, 0x6b901122L);
+        /* 14 */
+        d = ff(d, a, b, c, x[13], S12, 0xfd987193L);
+        /* 15 */
+        c = ff(c, d, a, b, x[14], S13, 0xa679438eL);
+        /* 16 */
+        b = ff(b, c, d, a, x[15], S14, 0x49b40821L);
+        /* Round 2 */
+        /* 17 */
+        a = gg(a, b, c, d, x[1], S21, 0xf61e2562L);
+        /* 18 */
+        d = gg(d, a, b, c, x[6], S22, 0xc040b340L);
+        /* 19 */
+        c = gg(c, d, a, b, x[11], S23, 0x265e5a51L);
+        /* 20 */
+        b = gg(b, c, d, a, x[0], S24, 0xe9b6c7aaL);
+        /* 21 */
+        a = gg(a, b, c, d, x[5], S21, 0xd62f105dL);
+        /* 22 */
+        d = gg(d, a, b, c, x[10], S22, 0x2441453L);
+        /* 23 */
+        c = gg(c, d, a, b, x[15], S23, 0xd8a1e681L);
+        /* 24 */
+        b = gg(b, c, d, a, x[4], S24, 0xe7d3fbc8L);
+        /* 25 */
+        a = gg(a, b, c, d, x[9], S21, 0x21e1cde6L);
+        /* 26 */
+        d = gg(d, a, b, c, x[14], S22, 0xc33707d6L);
+        /* 27 */
+        c = gg(c, d, a, b, x[3], S23, 0xf4d50d87L);
+        /* 28 */
+        b = gg(b, c, d, a, x[8], S24, 0x455a14edL);
+        /* 29 */
+        a = gg(a, b, c, d, x[13], S21, 0xa9e3e905L);
+        /* 30 */
+        d = gg(d, a, b, c, x[2], S22, 0xfcefa3f8L);
+        /* 31 */
+        c = gg(c, d, a, b, x[7], S23, 0x676f02d9L);
+        /* 32 */
+        b = gg(b, c, d, a, x[12], S24, 0x8d2a4c8aL);
+        /* Round 3 */
+        /* 33 */
+        a = hh(a, b, c, d, x[5], S31, 0xfffa3942L);
+        /* 34 */
+        d = hh(d, a, b, c, x[8], S32, 0x8771f681L);
+        /* 35 */
+        c = hh(c, d, a, b, x[11], S33, 0x6d9d6122L);
+        /* 36 */
+        b = hh(b, c, d, a, x[14], S34, 0xfde5380cL);
+        /* 37 */
+        a = hh(a, b, c, d, x[1], S31, 0xa4beea44L);
+        /* 38 */
+        d = hh(d, a, b, c, x[4], S32, 0x4bdecfa9L);
+        /* 39 */
+        c = hh(c, d, a, b, x[7], S33, 0xf6bb4b60L);
+        b = hh(b, c, d, a, x[10], S34, 0xbebfbc70L);
+        /* 41 */
+        a = hh(a, b, c, d, x[13], S31, 0x289b7ec6L);
+        /* 42 */
+        d = hh(d, a, b, c, x[0], S32, 0xeaa127faL);
+        /* 43 */
+        c = hh(c, d, a, b, x[3], S33, 0xd4ef3085L);
+        /* 44 */
+        b = hh(b, c, d, a, x[6], S34, 0x4881d05L);
+        /* 45 */
+        a = hh(a, b, c, d, x[9], S31, 0xd9d4d039L);
+        /* 46 */
+        d = hh(d, a, b, c, x[12], S32, 0xe6db99e5L);
+        /* 47 */
+        c = hh(c, d, a, b, x[15], S33, 0x1fa27cf8L);
+        /* 48 */
+        b = hh(b, c, d, a, x[2], S34, 0xc4ac5665L);
+        /* Round 4 */
+        /* 49 */
+        a = ii(a, b, c, d, x[0], S41, 0xf4292244L);
+        /* 50 */
+        d = ii(d, a, b, c, x[7], S42, 0x432aff97L);
+        /* 51 */
+        c = ii(c, d, a, b, x[14], S43, 0xab9423a7L);
+        /* 52 */
+        b = ii(b, c, d, a, x[5], S44, 0xfc93a039L);
+        /* 53 */
+        a = ii(a, b, c, d, x[12], S41, 0x655b59c3L);
+        /* 54 */
+        d = ii(d, a, b, c, x[3], S42, 0x8f0ccc92L);
+        /* 55 */
+        c = ii(c, d, a, b, x[10], S43, 0xffeff47dL);
+        /* 56 */
+        b = ii(b, c, d, a, x[1], S44, 0x85845dd1L);
+        /* 57 */
+        a = ii(a, b, c, d, x[8], S41, 0x6fa87e4fL);
+        /* 58 */
+        d = ii(d, a, b, c, x[15], S42, 0xfe2ce6e0L);
+        /* 59 */
+        c = ii(c, d, a, b, x[6], S43, 0xa3014314L);
+        /* 60 */
+        b = ii(b, c, d, a, x[13], S44, 0x4e0811a1L);
+        /* 61 */
+        a = ii(a, b, c, d, x[4], S41, 0xf7537e82L);
+        /* 62 */
+        d = ii(d, a, b, c, x[11], S42, 0xbd3af235L);
+        /* 63 */
+        c = ii(c, d, a, b, x[2], S43, 0x2ad7d2bbL);
+        /* 64 */
+        b = ii(b, c, d, a, x[9], S44, 0xeb86d391L);
+        state[0] += a;
+        state[1] += b;
+        state[2] += c;
+        state[3] += d;
+    }
+
+    /**
+     * Encode把long数组按顺序拆成byte数组,因为java的long类型是64bit的, 只拆低32bit,以适应原始C实现的用途
+     */
+    private void encode(byte[] output, long[] input, int len) {
+        int i, j;
+        int num = 4;
+        for (i = 0, j = 0; j < len; i++, j += num) {
+            output[j] = (byte) (input[i] & 0xffL);
+            output[j + 1] = (byte) ((input[i] >>> 8) & 0xffL);
+            output[j + 2] = (byte) ((input[i] >>> 16) & 0xffL);
+            output[j + 3] = (byte) ((input[i] >>> 24) & 0xffL);
+        }
+    }
+
+    /**
+     * Decode把byte数组按顺序合成成long数组,因为java的long类型是64bit的, 只合成低32bit,高32bit清零,以适应原始C实现的用途
+     */
+    private void decode(long[] output, byte[] input, int len) {
+        int i, j;
+        int num = 4;
+        for (i = 0, j = 0; j < len; i++, j += num) {
+            output[i] = b2iu(input[j]) | (b2iu(input[j + 1]) << 8) | (b2iu(input[j + 2]) << 16) | (b2iu(input[j + 3]) << 24);
+        }
+        return;
+    }
+
+    /**
+     * b2iu是我写的一个把byte按照不考虑正负号的原则的"升位"程序,因为java没有unsigned运算
+     */
+    private static long b2iu(byte b) {
+        return b < 0 ? b & 0x7F + 128 : b;
+    }
+
+    /**
+     * byteHEX(),用来把一个byte类型的数转换成十六进制的ASCII表示, 因为java中的byte的toString无法实现这一点,我们又没有C语言中的 sprintf(outbuf,"%02X",ib)
+     */
+    private static String byteHEX(byte ib) {
+        char[] digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'f'};
+        char[] ob = new char[2];
+        ob[0] = digit[(ib >>> 4) & 0X0F];
+        ob[1] = digit[ib & 0X0F];
+        return new String(ob);
+    }
+}

+ 12 - 8
okhttplib/src/main/java/com/mylove/okhttp/ObservableIsRequest.java → okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequest.java

@@ -1,11 +1,11 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.support.annotation.NonNull;
 import android.util.Log;
 
-import com.mylove.okhttp.listener.OnOkHttpCallBack;
+import com.benyanyi.okhttp.listener.OnOkHttpCallBack;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
@@ -51,7 +51,8 @@ class ObservableIsRequest {
                             .connectTimeout(30, TimeUnit.SECONDS)
                             .readTimeout(30, TimeUnit.SECONDS)
                             .writeTimeout(30, TimeUnit.SECONDS)
-                            .sslSocketFactory(SSLConfig.createSSLSocketFactory())//支持HTTPS请求,跳过证书验证
+                            //支持HTTPS请求,跳过证书验证
+                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
                             .build();
                 }
             }
@@ -61,10 +62,11 @@ class ObservableIsRequest {
         return instance;
     }
 
-    void request(String url, OnOkHttpCallBack OnOkHttpCallBack) {
-        this.okHttpCallBack = OnOkHttpCallBack;
+    void request(String url, OnOkHttpCallBack onOkHttpCallBack) {
+        this.okHttpCallBack = onOkHttpCallBack;
         getObservable(url).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
-                .serialize()//保证上游下游同一线程 ,防止不同线程下 onError 通知会跳到(并吞掉)原始Observable发射的数据项前面的错误行为
+                //保证上游下游同一线程 ,防止不同线程下 onError 通知会跳到(并吞掉)原始Observable发射的数据项前面的错误行为
+                .serialize()
                 .subscribe(new Observer<String>() {
                     @Override
                     public void onSubscribe(Disposable d) {
@@ -139,7 +141,8 @@ class ObservableIsRequest {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                String html = "<!DOCTYPE HTML>";
+                if (!str.toUpperCase().contains(html)) {
                     if (FormatUtil.isNotEmpty(mCacheUrl)) {
                         CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                     }
@@ -193,7 +196,8 @@ class ObservableIsRequest {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                String html = "<!DOCTYPE HTML>";
+                if (!str.toUpperCase().contains(html)) {
                     if (FormatUtil.isNotEmpty(mCacheUrl)) {
                         CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                     }

+ 16 - 11
okhttplib/src/main/java/com/mylove/okhttp/ObservableIsRequests.java → okhttplib/src/main/java/com/benyanyi/okhttp/ObservableIsRequests.java

@@ -1,12 +1,12 @@
-package com.mylove.okhttp;
+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 com.mylove.okhttp.listener.OnOkHttpCallBack;
 
 import org.json.XML;
 
@@ -56,7 +56,8 @@ class ObservableIsRequests<T> {
                             .connectTimeout(30, TimeUnit.SECONDS)
                             .readTimeout(30, TimeUnit.SECONDS)
                             .writeTimeout(30, TimeUnit.SECONDS)
-                            .sslSocketFactory(SSLConfig.createSSLSocketFactory())//支持HTTPS请求,跳过证书验证
+                            //支持HTTPS请求,跳过证书验证
+                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
                             .build();
                 }
             }
@@ -66,8 +67,8 @@ class ObservableIsRequests<T> {
         return instance;
     }
 
-    void request(String url, OnOkHttpCallBack OnOkHttpCallBack) {
-        this.okHttpCallBack = OnOkHttpCallBack;
+    void request(String url, OnOkHttpCallBack onOkHttpCallBack) {
+        this.okHttpCallBack = onOkHttpCallBack;
         getObservable(url).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
                 .serialize().subscribe(new Observer<T>() {
             @Override
@@ -142,14 +143,16 @@ class ObservableIsRequests<T> {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if ((str.substring(0, 1).equals("<") || str.substring(0, 1).equals("["))
-                        && (str.substring(1, 2).equals("\"") || str.substring(1, 2).equals("["))) {
+                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();
                     }
-                    if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                    String html = "<!DOCTYPE HTML>";
+                    if (!str.toUpperCase().contains(html)) {
                         if (FormatUtil.isNotEmpty(mCacheUrl)) {
                             CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                         }
@@ -208,14 +211,16 @@ class ObservableIsRequests<T> {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if ((str.substring(0, 1).equals("<") || str.substring(0, 1).equals("["))
-                        && (str.substring(1, 2).equals("\"") || str.substring(1, 2).equals("["))) {
+                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();
                     }
-                    if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                    String html = "<!DOCTYPE HTML>";
+                    if (!str.toUpperCase().contains(html)) {
                         if (FormatUtil.isNotEmpty(mCacheUrl)) {
                             CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                         }

+ 12 - 9
okhttplib/src/main/java/com/mylove/okhttp/ObservableRequest.java → okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequest.java

@@ -1,11 +1,11 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.support.annotation.NonNull;
 import android.util.Log;
 
-import com.mylove.okhttp.listener.OnOkHttpListener;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
 
 import java.io.File;
 import java.io.IOException;
@@ -57,7 +57,8 @@ class ObservableRequest {
                             .connectTimeout(30, TimeUnit.SECONDS)
                             .readTimeout(30, TimeUnit.SECONDS)
                             .writeTimeout(30, TimeUnit.SECONDS)
-                            .sslSocketFactory(SSLConfig.createSSLSocketFactory())//支持HTTPS请求,跳过证书验证
+                            //支持HTTPS请求,跳过证书验证
+                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
                             .build();
                 }
             }
@@ -68,7 +69,7 @@ class ObservableRequest {
         return instance;
     }
 
-    void request(String url, Map<Object, Object> oMap, final OnOkHttpListener OnOkHttpListener) {
+    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>() {
@@ -79,17 +80,17 @@ class ObservableRequest {
 
                     @Override
                     public void onNext(String str) {
-                        OnOkHttpListener.onSuccess(str);
+                        onOkHttpListener.onSuccess(str);
                     }
 
                     @Override
                     public void onError(Throwable e) {
-                        OnOkHttpListener.onFailure(e);
+                        onOkHttpListener.onFailure(e);
                     }
 
                     @Override
                     public void onComplete() {
-                        OnOkHttpListener.onCompleted();
+                        onOkHttpListener.onCompleted();
                     }
                 });
     }
@@ -149,7 +150,8 @@ class ObservableRequest {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                String html = "<!DOCTYPE HTML>";
+                if (!str.toUpperCase().contains(html)) {
                     if (FormatUtil.isNotEmpty(mCacheUrl)) {
                         CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                     }
@@ -203,7 +205,8 @@ class ObservableRequest {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                String html = "<!DOCTYPE HTML>";
+                if (!str.toUpperCase().contains(html)) {
                     if (FormatUtil.isNotEmpty(mCacheUrl)) {
                         CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                     }

+ 18 - 13
okhttplib/src/main/java/com/mylove/okhttp/ObservableRequests.java → okhttplib/src/main/java/com/benyanyi/okhttp/ObservableRequests.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
@@ -6,7 +6,7 @@ import android.support.annotation.NonNull;
 import android.util.Log;
 
 import com.google.gson.Gson;
-import com.mylove.okhttp.listener.OnOkHttpListener;
+import com.benyanyi.okhttp.listener.OnOkHttpListener;
 
 import org.json.XML;
 
@@ -62,7 +62,8 @@ class ObservableRequests<T> {
                             .connectTimeout(30, TimeUnit.SECONDS)
                             .readTimeout(30, TimeUnit.SECONDS)
                             .writeTimeout(30, TimeUnit.SECONDS)
-                            .sslSocketFactory(SSLConfig.createSSLSocketFactory())//支持HTTPS请求,跳过证书验证
+                            //支持HTTPS请求,跳过证书验证
+                            .sslSocketFactory(SslConfig.createSSLSocketFactory(), SslConfig.getTrustManager())
                             .build();
                 }
             }
@@ -73,7 +74,7 @@ class ObservableRequests<T> {
         return instance;
     }
 
-    void request(String url, Map<Object, Object> oMap, final OnOkHttpListener OnOkHttpListener) {
+    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
@@ -83,17 +84,17 @@ class ObservableRequests<T> {
 
             @Override
             public void onNext(T t) {
-                OnOkHttpListener.onSuccess(t);
+                onOkHttpListener.onSuccess(t);
             }
 
             @Override
             public void onError(Throwable e) {
-                OnOkHttpListener.onFailure(e);
+                onOkHttpListener.onFailure(e);
             }
 
             @Override
             public void onComplete() {
-                OnOkHttpListener.onCompleted();
+                onOkHttpListener.onCompleted();
             }
         });
     }
@@ -152,14 +153,16 @@ class ObservableRequests<T> {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if ((str.substring(0, 1).equals("<") || str.substring(0, 1).equals("["))
-                        && (str.substring(1, 2).equals("\"") || str.substring(1, 2).equals("["))) {
+                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();
                     }
-                    if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                    String html = "<!DOCTYPE HTML>";
+                    if (!str.toUpperCase().contains(html)) {
                         if (FormatUtil.isNotEmpty(mCacheUrl)) {
                             CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                         }
@@ -218,14 +221,16 @@ class ObservableRequests<T> {
                 if (OkHttpInfo.isLOG) {
                     Log.v(OkHttpInfo.TAG, str);
                 }
-                if ((str.substring(0, 1).equals("<") || str.substring(0, 1).equals("["))
-                        && (str.substring(1, 2).equals("\"") || str.substring(1, 2).equals("["))) {
+                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();
                     }
-                    if (!str.toUpperCase().contains("<!DOCTYPE HTML>")) {
+                    String html = "<!DOCTYPE HTML>";
+                    if (!str.toUpperCase().contains(html)) {
                         if (FormatUtil.isNotEmpty(mCacheUrl)) {
                             CacheUtils.getInstance(mContext).setCacheToLocalJson(mCacheUrl, str);
                         }

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/OkHttpInfo.java → okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpInfo.java

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

+ 3 - 3
okhttplib/src/main/java/com/mylove/okhttp/OkHttpUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/OkHttpUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
@@ -33,8 +33,8 @@ public class OkHttpUtil {
         return AutoRequest.getInstance(mContext, url, RequestType.POST);
     }
 
-    public XMLRequest postXMLToSoap(String url) {
-        return XMLRequest.getInstance(mContext, url, RequestType.POST_XML_SOAP);
+    public XmlRequest postXMLToSoap(String url) {
+        return XmlRequest.getInstance(mContext, url, RequestType.POST_XML_SOAP);
     }
 
     public AutoRequest postUpFile(String url) {

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

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

+ 63 - 0
okhttplib/src/main/java/com/benyanyi/okhttp/SslConfig.java

@@ -0,0 +1,63 @@
+package com.benyanyi.okhttp;
+
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+/**
+ * @author BenYanYi
+ * @date 2019/01/30 22:38
+ * @email ben@yanyi.red
+ * @overview
+ */
+class SslConfig {
+    /**
+     * 生成安全套接字工厂,用于https请求的证书跳过
+     * <p>
+     * SSLSocketFactory ssfFactory = null;
+     * try {
+     * SSLContext sc = SSLContext.getInstance("TLS");
+     * sc.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom());
+     * ssfFactory = sc.getSocketFactory();
+     * } catch (Exception e) {
+     * }
+     *
+     * @return
+     */
+    static SSLSocketFactory createSSLSocketFactory() {
+
+        SSLSocketFactory sslSocketFactory = null;
+        try {
+            SSLContext sslContext = SSLContext.getInstance("SSL");
+            sslContext.init(null, new TrustManager[]{getTrustManager()}, new SecureRandom());
+            sslSocketFactory = sslContext.getSocketFactory();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return sslSocketFactory;
+    }
+
+    static X509TrustManager getTrustManager() {
+        return new 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];
+            }
+        };
+    }
+}

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/TrustAllCerts.java → okhttplib/src/main/java/com/benyanyi/okhttp/TrustAllCerts.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;

+ 12 - 12
okhttplib/src/main/java/com/mylove/okhttp/XMLRequest.java → okhttplib/src/main/java/com/benyanyi/okhttp/XmlRequest.java

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

+ 7 - 3
okhttplib/src/main/java/com/mylove/okhttp/download/DownLoadObserver.java → okhttplib/src/main/java/com/benyanyi/okhttp/download/BaseDownLoadObserver.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.download;
+package com.benyanyi.okhttp.download;
 
 import io.reactivex.Observer;
 import io.reactivex.disposables.Disposable;
@@ -9,9 +9,13 @@ import io.reactivex.disposables.Disposable;
  * @email ben@yanyi.red
  * @overview
  */
-public abstract class DownLoadObserver implements Observer<DownloadInfo> {
-    protected Disposable d;//可以用于取消注册的监听者
+public abstract class BaseDownLoadObserver implements Observer<DownloadInfo> {
+    /**
+     * 可以用于取消注册的监听者
+     */
+    protected Disposable d;
     protected DownloadInfo downloadInfo;
+
     @Override
     public void onSubscribe(Disposable d) {
         this.d = d;

+ 5 - 2
okhttplib/src/main/java/com/mylove/okhttp/download/DownloadInfo.java → okhttplib/src/main/java/com/benyanyi/okhttp/download/DownloadInfo.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.download;
+package com.benyanyi.okhttp.download;
 
 import java.io.File;
 
@@ -9,7 +9,10 @@ import java.io.File;
  * @overview
  */
 public class DownloadInfo {
-    public static final long TOTAL_ERROR = -1;//获取进度失败
+    /**
+     * 获取进度失败
+     */
+    public static final long TOTAL_ERROR = -1;
     private String url;
     private long total;
     private long progress;

+ 41 - 19
okhttplib/src/main/java/com/mylove/okhttp/download/DownloadManager.java → okhttplib/src/main/java/com/benyanyi/okhttp/download/DownloadManager.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.download;
+package com.benyanyi.okhttp.download;
 
 import android.content.Context;
 
@@ -31,11 +31,22 @@ import okhttp3.Response;
  */
 public class DownloadManager {
     private static final AtomicReference<DownloadManager> INSTANCE = new AtomicReference<>();
-    private HashMap<String, Call> downCalls;//用来存放各个下载的请求
-    private OkHttpClient mClient;//OKHttpClient;
+    /**
+     * 用来存放各个下载的请求
+     */
+    private HashMap<String, Call> downCalls;
+    /**
+     * OKHttpClient;
+     */
+    private OkHttpClient mClient;
     private Context mContext;
 
-    //获得一个单例类
+    /**
+     * 获得一个单例类
+     *
+     * @param mContext
+     * @return
+     */
     public static DownloadManager getInstance(Context mContext) {
         for (; ; ) {
             DownloadManager current = INSTANCE.get();
@@ -58,12 +69,13 @@ public class DownloadManager {
     /**
      * 开始下载
      *
-     * @param url              下载请求的网址
-     * @param downLoadObserver 用来回调的接口
+     * @param url                  下载请求的网址
+     * @param baseDownLoadObserver 用来回调的接口
      */
-    public void download(String url, DownLoadObserver downLoadObserver) {
+    public void download(String url, BaseDownLoadObserver baseDownLoadObserver) {
         Observable.just(url)
-                .filter(new Predicate<String>() {//call的map已经有了,就证明正在下载,则这次不下载
+                //call的map已经有了,就证明正在下载,则这次不下载
+                .filter(new Predicate<String>() {
                     @Override
                     public boolean test(String s) throws Exception {
                         return !downCalls.containsKey(s);
@@ -75,21 +87,26 @@ public class DownloadManager {
                         return Observable.just(createDownInfo(s));
                     }
                 })
-                .map(new Function<Object, DownloadInfo>() {//检测本地文件夹,生成新的文件名
+                //检测本地文件夹,生成新的文件名
+                .map(new Function<Object, DownloadInfo>() {
                     @Override
                     public DownloadInfo apply(Object o) throws Exception {
                         return getRealFileName((DownloadInfo) o);
                     }
                 })
-                .flatMap(new Function<DownloadInfo, ObservableSource<DownloadInfo>>() {//下载
+                //下载
+                .flatMap(new Function<DownloadInfo, ObservableSource<DownloadInfo>>() {
                     @Override
                     public ObservableSource<DownloadInfo> apply(DownloadInfo downloadInfo) throws Exception {
                         return Observable.create(new DownloadSubscribe(downloadInfo));
                     }
                 })
-                .observeOn(AndroidSchedulers.mainThread())//在主线程回调
-                .subscribeOn(Schedulers.io())//在子线程执行
-                .subscribe(downLoadObserver);//添加观察者
+                //在主线程回调
+                .observeOn(AndroidSchedulers.mainThread())
+                //在子线程执行
+                .subscribeOn(Schedulers.io())
+                //添加观察者
+                .subscribe(baseDownLoadObserver);
 
     }
 
@@ -109,7 +126,8 @@ public class DownloadManager {
      */
     private DownloadInfo createDownInfo(String url) {
         DownloadInfo downloadInfo = new DownloadInfo(url);
-        long contentLength = getContentLength(url);//获得文件大小
+        //获得文件大小
+        long contentLength = getContentLength(url);
         downloadInfo.setTotal(contentLength);
         String fileName = url.substring(url.lastIndexOf("/"));
         downloadInfo.setFileName(fileName);
@@ -158,8 +176,10 @@ public class DownloadManager {
         @Override
         public void subscribe(ObservableEmitter<DownloadInfo> e) throws Exception {
             String url = downloadInfo.getUrl();
-            long downloadLength = downloadInfo.getProgress();//已经下载好的长度
-            long contentLength = downloadInfo.getTotal();//文件的总长度
+            //已经下载好的长度
+            long downloadLength = downloadInfo.getProgress();
+            //文件的总长度
+            long contentLength = downloadInfo.getTotal();
             //初始进度信息
             e.onNext(downloadInfo);
 
@@ -169,7 +189,8 @@ public class DownloadManager {
                     .url(url)
                     .build();
             Call call = mClient.newCall(request);
-            downCalls.put(url, call);//把这个添加到call里,方便取消
+            //把这个添加到call里,方便取消
+            downCalls.put(url, call);
             Response response = call.execute();
             String savePath = FileUtil.isExistDir(mContext.getPackageName());
             File file = new File(savePath, downloadInfo.getFileName());
@@ -178,7 +199,8 @@ public class DownloadManager {
             try {
                 is = response.body().byteStream();
                 fileOutputStream = new FileOutputStream(file, true);
-                byte[] buffer = new byte[2048];//缓冲数组2kB
+                //缓冲数组2kB
+                byte[] buffer = new byte[2048];
                 int len;
                 while ((len = is.read(buffer)) != -1) {
                     fileOutputStream.write(buffer, 0, len);
@@ -191,7 +213,7 @@ public class DownloadManager {
                 downCalls.remove(url);
             } finally {
                 //关闭IO流
-                IOUtil.closeAll(is, fileOutputStream);
+                IoUtil.closeAll(is, fileOutputStream);
             }
             e.onComplete();//完成
         }

+ 9 - 6
okhttplib/src/main/java/com/mylove/okhttp/FileUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/download/FileUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp.download;
 
 import android.graphics.Bitmap;
 import android.os.Environment;
@@ -38,8 +38,8 @@ class FileUtil {
                 file.createNewFile();
             }
             FileOutputStream fos = new FileOutputStream(file);
-            String substring = path.substring(path.length() - 3, path.length());
-            if (substring.equals("png")) {
+            String substring = path.substring(path.length() - 3);
+            if ("png".equals(substring)) {
                 bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
             } else {
                 bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
@@ -55,9 +55,12 @@ class FileUtil {
     static String getSDPath() {
         File sdDir = null;
         boolean sdCardExist = Environment.getExternalStorageState()
-                .equals(Environment.MEDIA_MOUNTED); //判断sd卡是否存在
-        if (sdCardExist) {//判断sd卡是否存在
-            sdDir = Environment.getExternalStorageDirectory();//获取跟目录
+                //判断sd卡是否存在
+                .equals(Environment.MEDIA_MOUNTED);
+        //判断sd卡是否存在
+        if (sdCardExist) {
+            //获取跟目录
+            sdDir = Environment.getExternalStorageDirectory();
         }
         return sdDir.toString();
     }

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/download/FormatUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/download/FormatUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.download;
+package com.benyanyi.okhttp.download;
 
 import java.util.Map;
 

+ 3 - 3
okhttplib/src/main/java/com/mylove/okhttp/download/IOUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/download/IoUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.download;
+package com.benyanyi.okhttp.download;
 
 import java.io.Closeable;
 import java.io.IOException;
@@ -9,8 +9,8 @@ import java.io.IOException;
  * @email ben@yanyi.red
  * @overview
  */
-public class IOUtil {
-    public static void closeAll(Closeable... closeables){
+class IoUtil {
+    static void closeAll(Closeable... closeables){
         if(closeables == null){
             return;
         }

+ 48 - 26
okhttplib/src/main/java/com/mylove/okhttp/download/NotificationUtil.java → okhttplib/src/main/java/com/benyanyi/okhttp/download/NotificationUtil.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.download;
+package com.benyanyi.okhttp.download;
 
 import android.app.Activity;
 import android.app.Notification;
@@ -8,6 +8,7 @@ import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
+import android.os.Build;
 import android.widget.RemoteViews;
 
 import com.mylove.okhttp.R;
@@ -22,9 +23,13 @@ import java.util.Map;
  * @overview
  */
 public class NotificationUtil {
-    // NotificationManager : 是状态栏通知的管理类,负责发通知、清楚通知等。
+    /**
+     * NotificationManager : 是状态栏通知的管理类,负责发通知、清楚通知等。
+     */
     private NotificationManager manager;
-    // 定义Map来保存Notification对象
+    /**
+     * 定义Map来保存Notification对象
+     */
     private Map<Integer, Notification> map = null;
     private int icon;
     private Class<?> aClass;
@@ -64,7 +69,7 @@ public class NotificationUtil {
             // 创建通知对象
             Notification notification;
             Notification.Builder builder;
-            if (android.os.Build.VERSION.SDK_INT >= 26) {
+            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                 //Android O上对Notification进行了修改,如果设置的targetSDKVersion>=26建议使用此种方式创建通知栏
                 if (null == notificationManager) {
                     notificationManager = (NotificationManager) mActivity.getSystemService(Context.NOTIFICATION_SERVICE);
@@ -73,38 +78,55 @@ public class NotificationUtil {
                 if (!isCreateChannel) {
                     NotificationChannel notificationChannel = new NotificationChannel(channelId,
                             NOTIFICATION_CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
-                    notificationChannel.enableLights(true);//是否在桌面icon右上角展示小圆点
-                    notificationChannel.setLightColor(Color.BLUE); //小圆点颜色
-                    notificationChannel.setShowBadge(true); //是否在久按桌面图标时显示此渠道的通知
+                    //是否在桌面icon右上角展示小圆点
+                    notificationChannel.enableLights(true);
+                    //小圆点颜色
+                    notificationChannel.setLightColor(Color.BLUE);
+                    //是否在久按桌面图标时显示此渠道的通知
+                    notificationChannel.setShowBadge(true);
                     notificationManager.createNotificationChannel(notificationChannel);
                     isCreateChannel = true;
                 }
                 builder = new Notification.Builder(mActivity.getApplicationContext(), channelId);
+                builder.setSmallIcon(icon);
+                builder.setTimeoutAfter(System.currentTimeMillis());
+                if (aClass != null) {
+                    Intent in = new Intent(mActivity, aClass);
+                    builder.setContentIntent(PendingIntent.getActivity(mActivity, 0, in, 0));
+                }
+                builder.setCustomContentView(new RemoteViews(
+                        mActivity.getPackageName(),
+                        R.layout.notification_contentview));
+                RemoteViews contentView = builder.createContentView();
+                contentView.setTextViewText(R.id.title, title);
+                contentView.setImageViewResource(R.id.icon, icon);
                 notification = builder.build();
             } else {
                 notification = new Notification();
+                // 设置显示时间
+                notification.when = System.currentTimeMillis();
+                // 设置通知显示的图标
+                notification.icon = icon;
+                // 设置通知的特性: 通知被点击后,自动消失
+                notification.flags = Notification.FLAG_AUTO_CANCEL;
+                // 设置点击通知栏操作
+                if (aClass != null) {
+                    // 点击跳转到指定页面
+                    Intent in = new Intent(mActivity, aClass);
+                    notification.contentIntent = PendingIntent.getActivity(mActivity, 0, in,
+                            0);
+                }
+                // 设置通知的显示视图
+                notification.contentView = new RemoteViews(
+                        mActivity.getPackageName(),
+                        R.layout.notification_contentview);
+                notification.contentView.setTextViewText(R.id.title, title);
+                notification.contentView.setImageViewResource(R.id.icon, icon);
             }
-            // 设置显示时间
-            notification.when = System.currentTimeMillis();
-            // 设置通知显示的图标
-            notification.icon = icon;
-            // 设置通知的特性: 通知被点击后,自动消失
-            notification.flags = Notification.FLAG_AUTO_CANCEL;
-            // 设置点击通知栏操作
-            if (aClass != null) {
-                Intent in = new Intent(mActivity, aClass);// 点击跳转到指定页面
-                notification.contentIntent = PendingIntent.getActivity(mActivity, 0, in,
-                        0);
-            }
-            // 设置通知的显示视图
-            notification.contentView = new RemoteViews(
-                    mActivity.getPackageName(),
-                    R.layout.notification_contentview);
-            notification.contentView.setTextViewText(R.id.title, title);
-            notification.contentView.setImageViewResource(R.id.icon, icon);
             // 发出通知
             manager.notify(notificationId, notification);
-            map.put(notificationId, notification);// 存入Map中
+            // 存入Map中
+            map.put(notificationId, notification);
         }
     }
 

+ 1 - 1
okhttplib/src/main/java/com/mylove/okhttp/listener/OnDownloadListener.java → okhttplib/src/main/java/com/benyanyi/okhttp/listener/OnDownloadListener.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.listener;
+package com.benyanyi.okhttp.listener;
 
 /**
  * @author BenYanYi

+ 6 - 1
okhttplib/src/main/java/com/mylove/okhttp/listener/OnOkHttpCallBack.java → okhttplib/src/main/java/com/benyanyi/okhttp/listener/OnOkHttpCallBack.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp.listener;
+package com.benyanyi.okhttp.listener;
 
 import okhttp3.Request;
 
@@ -9,5 +9,10 @@ import okhttp3.Request;
  * @overview
  */
 public interface OnOkHttpCallBack extends OnOkHttpListener {
+    /**
+     * 设置Request
+     * @param url
+     * @return
+     */
     Request setRequest(String url);
 }

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

@@ -0,0 +1,27 @@
+package com.benyanyi.okhttp.listener;
+
+/**
+ * @author myLove
+ */
+
+public interface OnOkHttpListener {
+    /**
+     * 网络请求后
+     */
+    void onCompleted();
+
+    /**
+     * 请求成功
+     *
+     * @param message
+     * @param <T>
+     */
+    <T> void onSuccess(T message);
+
+    /**
+     * 请求失败
+     *
+     * @param t
+     */
+    void onFailure(Throwable t);
+}

+ 0 - 10
okhttplib/src/main/java/com/mylove/okhttp/CallType.java

@@ -1,10 +0,0 @@
-package com.mylove.okhttp;
-
-/**
- * @author myLove
- */
-
-enum CallType {
-    SYNC,
-    ASYNC
-}

+ 0 - 336
okhttplib/src/main/java/com/mylove/okhttp/MD5keyUtil.java

@@ -1,336 +0,0 @@
-package com.mylove.okhttp;
-
-/**
- * @author myLove
- */
-
-class MD5keyUtil {
-    /*
-     * 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的, 这里把它们实现成为static final是表示了只读,切能在同一个进程空间内的多个 Instance间共享
-     */
-    private static final int S11 = 7;
-
-    private static final int S12 = 12;
-
-    private static final int S13 = 17;
-
-    private static final int S14 = 22;
-
-    private static final int S21 = 5;
-
-    private static final int S22 = 9;
-
-    private static final int S23 = 14;
-
-    private static final int S24 = 20;
-
-    private static final int S31 = 4;
-
-    private static final int S32 = 11;
-
-    private static final int S33 = 16;
-
-    private static final int S34 = 23;
-
-    private static final int S41 = 6;
-
-    private static final int S42 = 10;
-
-    private static final int S43 = 15;
-
-    private static final int S44 = 21;
-
-    private static final byte[] PADDING = {-128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-            0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-    /*
-     * 下面的三个成员是keyBean计算过程中用到的3个核心数据,在原始的C实现中 被定义到keyBean_CTX结构中
-     */
-    private static long[] state = new long[4]; // state (ABCD)
-
-    private static long[] count = new long[2]; // number of bits, modulo 2^64 (lsb
-
-    // first)
-
-    private static byte[] buffer = new byte[64]; // input buffer
-
-    /*
-     * digestHexStr是keyBean的唯一一个公共成员,是最新一次计算结果的 16进制ASCII表示.
-     */
-
-    /*
-     * digest,是最新一次计算结果的2进制内部表示,表示128bit的keyBean值.
-     */
-    private byte[] digest = new byte[16];
-
-    /*
-     * getkeyBeanofStr是类keyBean最主要的公共方法,入口参数是你想要进行keyBean变换的字符串 返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的.
-     */
-    String getkeyBeanofStr(String inbuf) {
-        keyBeanInit();
-        keyBeanUpdate(inbuf.getBytes(), inbuf.length());
-        keyBeanFinal();
-        StringBuilder digestHexStr = new StringBuilder();
-        for (int i = 0; i < 16; i++) {
-            digestHexStr.append(byteHEX(digest[i]));
-        }
-        return digestHexStr.toString();
-    }
-
-    private static MD5keyUtil mBean = null;
-
-    static MD5keyUtil newInstance() {
-        if (mBean == null) {
-            mBean = new MD5keyUtil();
-        }
-        keyBeanInit();
-        return mBean;
-    }
-
-
-    // 这是keyBean这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数
-    private MD5keyUtil() {
-        keyBeanInit();
-        return;
-    }
-
-    /* keyBeanInit是一个初始化函数,初始化核心变量,装入标准的幻数 */
-    private static void keyBeanInit() {
-        count[0] = 0L;
-        count[1] = 0L;
-        // /* Load magic initialization constants.
-        state[0] = 0x67452301L;
-        state[1] = 0xefcdab89L;
-        state[2] = 0x98badcfeL;
-        state[3] = 0x10325476L;
-        return;
-    }
-
-    /*
-     * F, G, H ,I 是4个基本的keyBean函数,在原始的keyBean的C实现中,由于它们是 简单的位运算,可能出于效率的考虑把它们实现成了宏,在java中,我们把它们 实现成了private方法,名字保持了原来C中的。
-     */
-    private long F(long x, long y, long z) {
-        return (x & y) | ((~x) & z);
-    }
-
-    private long G(long x, long y, long z) {
-        return (x & z) | (y & (~z));
-    }
-
-    private long H(long x, long y, long z) {
-        return x ^ y ^ z;
-    }
-
-    private long I(long x, long y, long z) {
-        return y ^ (x | (~z));
-    }
-
-    /*
-     * FF,GG,HH和II将调用F,G,H,I进行近一步变换 FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. Rotation is separate
-     * from addition to prevent recomputation.
-     */
-    private long FF(long a, long b, long c, long d, long x, long s, long ac) {
-        a += F(b, c, d) + x + ac;
-        a = ((int) a << s) | ((int) a >>> (32 - s));
-        a += b;
-        return a;
-    }
-
-    private long GG(long a, long b, long c, long d, long x, long s, long ac) {
-        a += G(b, c, d) + x + ac;
-        a = ((int) a << s) | ((int) a >>> (32 - s));
-        a += b;
-        return a;
-    }
-
-    private long HH(long a, long b, long c, long d, long x, long s, long ac) {
-        a += H(b, c, d) + x + ac;
-        a = ((int) a << s) | ((int) a >>> (32 - s));
-        a += b;
-        return a;
-    }
-
-    private long II(long a, long b, long c, long d, long x, long s, long ac) {
-        a += I(b, c, d) + x + ac;
-        a = ((int) a << s) | ((int) a >>> (32 - s));
-        a += b;
-        return a;
-    }
-
-    /*
-     * keyBeanUpdate是keyBean的主计算过程,inbuf是要变换的字节串,inputlen是长度,这个 函数由getkeyBeanofStr调用,调用之前需要调用keyBeaninit,因此把它设计成private的
-     */
-    private void keyBeanUpdate(byte[] inbuf, int inputLen) {
-        int i, index, partLen;
-        byte[] block = new byte[64];
-        index = (int) (count[0] >>> 3) & 0x3F;
-        // /* Update number of bits */
-        if ((count[0] += (inputLen << 3)) < (inputLen << 3))
-            count[1]++;
-        count[1] += (inputLen >>> 29);
-        partLen = 64 - index;
-        // Transform as many times as possible.
-        if (inputLen >= partLen) {
-            keyBeanMemcpy(buffer, inbuf, index, 0, partLen);
-            keyBeanTransform(buffer);
-            for (i = partLen; i + 63 < inputLen; i += 64) {
-                keyBeanMemcpy(block, inbuf, 0, i, 64);
-                keyBeanTransform(block);
-            }
-            index = 0;
-        } else
-            i = 0;
-        // /* Buffer remaining input */
-        keyBeanMemcpy(buffer, inbuf, index, i, inputLen - i);
-    }
-
-    /*
-     * keyBeanFinal整理和填写输出结果
-     */
-    private void keyBeanFinal() {
-        byte[] bits = new byte[8];
-        int index, padLen;
-        // /* Save number of bits */
-        Encode(bits, count, 8);
-        // /* Pad out to 56 mod 64.
-        index = (int) (count[0] >>> 3) & 0x3f;
-        padLen = (index < 56) ? (56 - index) : (120 - index);
-        keyBeanUpdate(PADDING, padLen);
-        // /* Append length (before padding) */
-        keyBeanUpdate(bits, 8);
-        // /* Store state in digest */
-        Encode(digest, state, 16);
-    }
-
-    /*
-     * keyBeanMemcpy是一个内部使用的byte数组的块拷贝函数,从input的inpos开始把len长度的 字节拷贝到output的outpos位置开始
-     */
-    private void keyBeanMemcpy(byte[] output, byte[] input, int outpos, int inpos, int len) {
-        int i;
-        for (i = 0; i < len; i++)
-            output[outpos + i] = input[inpos + i];
-    }
-
-    /*
-     * keyBeanTransform是keyBean核心变换程序,有keyBeanUpdate调用,block是分块的原始字节
-     */
-    private void keyBeanTransform(byte block[]) {
-        long a = state[0], b = state[1], c = state[2], d = state[3];
-        long[] x = new long[16];
-        Decode(x, block, 64);
-        /* Round 1 */
-        a = FF(a, b, c, d, x[0], S11, 0xd76aa478L); /* 1 */
-        d = FF(d, a, b, c, x[1], S12, 0xe8c7b756L); /* 2 */
-        c = FF(c, d, a, b, x[2], S13, 0x242070dbL); /* 3 */
-        b = FF(b, c, d, a, x[3], S14, 0xc1bdceeeL); /* 4 */
-        a = FF(a, b, c, d, x[4], S11, 0xf57c0fafL); /* 5 */
-        d = FF(d, a, b, c, x[5], S12, 0x4787c62aL); /* 6 */
-        c = FF(c, d, a, b, x[6], S13, 0xa8304613L); /* 7 */
-        b = FF(b, c, d, a, x[7], S14, 0xfd469501L); /* 8 */
-        a = FF(a, b, c, d, x[8], S11, 0x698098d8L); /* 9 */
-        d = FF(d, a, b, c, x[9], S12, 0x8b44f7afL); /* 10 */
-        c = FF(c, d, a, b, x[10], S13, 0xffff5bb1L); /* 11 */
-        b = FF(b, c, d, a, x[11], S14, 0x895cd7beL); /* 12 */
-        a = FF(a, b, c, d, x[12], S11, 0x6b901122L); /* 13 */
-        d = FF(d, a, b, c, x[13], S12, 0xfd987193L); /* 14 */
-        c = FF(c, d, a, b, x[14], S13, 0xa679438eL); /* 15 */
-        b = FF(b, c, d, a, x[15], S14, 0x49b40821L); /* 16 */
-        /* Round 2 */
-        a = GG(a, b, c, d, x[1], S21, 0xf61e2562L); /* 17 */
-        d = GG(d, a, b, c, x[6], S22, 0xc040b340L); /* 18 */
-        c = GG(c, d, a, b, x[11], S23, 0x265e5a51L); /* 19 */
-        b = GG(b, c, d, a, x[0], S24, 0xe9b6c7aaL); /* 20 */
-        a = GG(a, b, c, d, x[5], S21, 0xd62f105dL); /* 21 */
-        d = GG(d, a, b, c, x[10], S22, 0x2441453L); /* 22 */
-        c = GG(c, d, a, b, x[15], S23, 0xd8a1e681L); /* 23 */
-        b = GG(b, c, d, a, x[4], S24, 0xe7d3fbc8L); /* 24 */
-        a = GG(a, b, c, d, x[9], S21, 0x21e1cde6L); /* 25 */
-        d = GG(d, a, b, c, x[14], S22, 0xc33707d6L); /* 26 */
-        c = GG(c, d, a, b, x[3], S23, 0xf4d50d87L); /* 27 */
-        b = GG(b, c, d, a, x[8], S24, 0x455a14edL); /* 28 */
-        a = GG(a, b, c, d, x[13], S21, 0xa9e3e905L); /* 29 */
-        d = GG(d, a, b, c, x[2], S22, 0xfcefa3f8L); /* 30 */
-        c = GG(c, d, a, b, x[7], S23, 0x676f02d9L); /* 31 */
-        b = GG(b, c, d, a, x[12], S24, 0x8d2a4c8aL); /* 32 */
-        /* Round 3 */
-        a = HH(a, b, c, d, x[5], S31, 0xfffa3942L); /* 33 */
-        d = HH(d, a, b, c, x[8], S32, 0x8771f681L); /* 34 */
-        c = HH(c, d, a, b, x[11], S33, 0x6d9d6122L); /* 35 */
-        b = HH(b, c, d, a, x[14], S34, 0xfde5380cL); /* 36 */
-        a = HH(a, b, c, d, x[1], S31, 0xa4beea44L); /* 37 */
-        d = HH(d, a, b, c, x[4], S32, 0x4bdecfa9L); /* 38 */
-        c = HH(c, d, a, b, x[7], S33, 0xf6bb4b60L); /* 39 */
-        b = HH(b, c, d, a, x[10], S34, 0xbebfbc70L); /* 40 */
-        a = HH(a, b, c, d, x[13], S31, 0x289b7ec6L); /* 41 */
-        d = HH(d, a, b, c, x[0], S32, 0xeaa127faL); /* 42 */
-        c = HH(c, d, a, b, x[3], S33, 0xd4ef3085L); /* 43 */
-        b = HH(b, c, d, a, x[6], S34, 0x4881d05L); /* 44 */
-        a = HH(a, b, c, d, x[9], S31, 0xd9d4d039L); /* 45 */
-        d = HH(d, a, b, c, x[12], S32, 0xe6db99e5L); /* 46 */
-        c = HH(c, d, a, b, x[15], S33, 0x1fa27cf8L); /* 47 */
-        b = HH(b, c, d, a, x[2], S34, 0xc4ac5665L); /* 48 */
-        /* Round 4 */
-        a = II(a, b, c, d, x[0], S41, 0xf4292244L); /* 49 */
-        d = II(d, a, b, c, x[7], S42, 0x432aff97L); /* 50 */
-        c = II(c, d, a, b, x[14], S43, 0xab9423a7L); /* 51 */
-        b = II(b, c, d, a, x[5], S44, 0xfc93a039L); /* 52 */
-        a = II(a, b, c, d, x[12], S41, 0x655b59c3L); /* 53 */
-        d = II(d, a, b, c, x[3], S42, 0x8f0ccc92L); /* 54 */
-        c = II(c, d, a, b, x[10], S43, 0xffeff47dL); /* 55 */
-        b = II(b, c, d, a, x[1], S44, 0x85845dd1L); /* 56 */
-        a = II(a, b, c, d, x[8], S41, 0x6fa87e4fL); /* 57 */
-        d = II(d, a, b, c, x[15], S42, 0xfe2ce6e0L); /* 58 */
-        c = II(c, d, a, b, x[6], S43, 0xa3014314L); /* 59 */
-        b = II(b, c, d, a, x[13], S44, 0x4e0811a1L); /* 60 */
-        a = II(a, b, c, d, x[4], S41, 0xf7537e82L); /* 61 */
-        d = II(d, a, b, c, x[11], S42, 0xbd3af235L); /* 62 */
-        c = II(c, d, a, b, x[2], S43, 0x2ad7d2bbL); /* 63 */
-        b = II(b, c, d, a, x[9], S44, 0xeb86d391L); /* 64 */
-        state[0] += a;
-        state[1] += b;
-        state[2] += c;
-        state[3] += d;
-    }
-
-    /*
-     * Encode把long数组按顺序拆成byte数组,因为java的long类型是64bit的, 只拆低32bit,以适应原始C实现的用途
-     */
-    private void Encode(byte[] output, long[] input, int len) {
-        int i, j;
-        for (i = 0, j = 0; j < len; i++, j += 4) {
-            output[j] = (byte) (input[i] & 0xffL);
-            output[j + 1] = (byte) ((input[i] >>> 8) & 0xffL);
-            output[j + 2] = (byte) ((input[i] >>> 16) & 0xffL);
-            output[j + 3] = (byte) ((input[i] >>> 24) & 0xffL);
-        }
-    }
-
-    /*
-     * Decode把byte数组按顺序合成成long数组,因为java的long类型是64bit的, 只合成低32bit,高32bit清零,以适应原始C实现的用途
-     */
-    private void Decode(long[] output, byte[] input, int len) {
-        int i, j;
-
-        for (i = 0, j = 0; j < len; i++, j += 4)
-            output[i] = b2iu(input[j]) | (b2iu(input[j + 1]) << 8) | (b2iu(input[j + 2]) << 16) | (b2iu(input[j + 3]) << 24);
-        return;
-    }
-
-    /*
-     * b2iu是我写的一个把byte按照不考虑正负号的原则的"升位"程序,因为java没有unsigned运算
-     */
-    private static long b2iu(byte b) {
-        return b < 0 ? b & 0x7F + 128 : b;
-    }
-
-    /*
-     * byteHEX(),用来把一个byte类型的数转换成十六进制的ASCII表示, 因为java中的byte的toString无法实现这一点,我们又没有C语言中的 sprintf(outbuf,"%02X",ib)
-     */
-    private static String byteHEX(byte ib) {
-        char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
-        char[] ob = new char[2];
-        ob[0] = Digit[(ib >>> 4) & 0X0F];
-        ob[1] = Digit[ib & 0X0F];
-        return new String(ob);
-    }
-}

+ 0 - 13
okhttplib/src/main/java/com/mylove/okhttp/RequestType.java

@@ -1,13 +0,0 @@
-package com.mylove.okhttp;
-
-/**
- * @author myLove
- */
-
-enum RequestType {
-    GET,
-    POST,
-    POST_XML_SOAP,
-    UP_FILE,
-    ALL,
-}

+ 0 - 31
okhttplib/src/main/java/com/mylove/okhttp/SSLConfig.java

@@ -1,31 +0,0 @@
-package com.mylove.okhttp;
-
-import java.security.SecureRandom;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-
-/**
- * @author BenYanYi
- * @date 2019/01/30 22:38
- * @email ben@yanyi.red
- * @overview
- */
-class SSLConfig {
-    /**
-     * 生成安全套接字工厂,用于https请求的证书跳过
-     *
-     * @return
-     */
-    static SSLSocketFactory createSSLSocketFactory() {
-        SSLSocketFactory ssfFactory = null;
-        try {
-            SSLContext sc = SSLContext.getInstance("TLS");
-            sc.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom());
-            ssfFactory = sc.getSocketFactory();
-        } catch (Exception e) {
-        }
-        return ssfFactory;
-    }
-}

+ 0 - 13
okhttplib/src/main/java/com/mylove/okhttp/listener/OnOkHttpListener.java

@@ -1,13 +0,0 @@
-package com.mylove.okhttp.listener;
-
-/**
- * @author myLove
- */
-
-public interface OnOkHttpListener {
-    void onCompleted();
-
-    <T> void onSuccess(T message);
-
-    void onFailure(Throwable t);
-}

+ 1 - 1
app/src/test/java/com/mylove/okhttp/ExampleUnitTest.java → okhttplib/src/test/java/com/benyanyi/okhttp/ExampleUnitTest.java

@@ -1,4 +1,4 @@
-package com.mylove.okhttp;
+package com.benyanyi.okhttp;
 
 import org.junit.Test;