Browse Source

提交分类: 功能优化;
提交内容: 使volley绕过HTTPS的证书验证
当前版本: 测试版本6.1.1
是否冲突: 否

raomeng 8 years ago
parent
commit
289c9572fd

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Mon Jan 08 17:09:47 CST 2018
-debugName=395
+#Thu Jan 11 15:27:23 CST 2018
+debugName=399
 versionName=624
-debugCode=395
+debugCode=399
 versionCode=163

+ 2 - 0
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -23,6 +23,7 @@ import com.core.net.utils.NetUtils;
 import com.core.net.volley.FastVolley;
 import com.core.service.InitializeService;
 import com.lidroid.xutils.HttpUtils;
+import com.me.network.app.http.ssl.TrustAllCerts;
 import com.nostra13.universalimageloader.cache.disc.impl.TotalSizeLimitedDiscCache;
 import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
 import com.nostra13.universalimageloader.cache.memory.MemoryCacheAware;
@@ -103,6 +104,7 @@ public class MyApplication extends BaseApplication {
         InitializeService.initApplication(this);
 
         INSTANCE = this;
+        TrustAllCerts.allowAllSSL();//信任所有证书
         mRequestQueue = Volley.newRequestQueue(this);
 
         mHttpUtils = new HttpUtils();

+ 72 - 70
app_core/common/src/main/java/com/core/net/volley/FastVolley.java

@@ -7,89 +7,91 @@ import com.android.volley.Request;
 import com.android.volley.RequestQueue;
 import com.android.volley.RetryPolicy;
 import com.android.volley.toolbox.Volley;
+import com.me.network.app.http.ssl.TrustAllCerts;
 
 
 public class FastVolley {
 
-	public static final String TAG = "Volley";
-	public static final boolean DEBUG = true;
+    public static final String TAG = "Volley";
+    public static final boolean DEBUG = true;
 
-	private RequestQueue mRequestQueue;
+    private RequestQueue mRequestQueue;
 
-	public FastVolley(Context context) {
-		mRequestQueue = Volley.newRequestQueue(context);
-	}
+    public FastVolley(Context context) {
+        TrustAllCerts.allowAllSSL();//信任所有证书
+        mRequestQueue = Volley.newRequestQueue(context);
+    }
 
-	public void start() {
-		mRequestQueue.start();
-	}
+    public void start() {
+        mRequestQueue.start();
+    }
 
-	public void stop() {
-		mRequestQueue.stop();
-	}
+    public void stop() {
+        mRequestQueue.stop();
+    }
 
-	public void addDefaultRequest(String parentTag, Request<?> request) {
-		addRequest(parentTag, request, FastVolley.newDefaultRetryPolicy());
-	}
+    public void addDefaultRequest(String parentTag, Request<?> request) {
+        addRequest(parentTag, request, FastVolley.newDefaultRetryPolicy());
+    }
 
-	public void addShortRequest(String parentTag, Request<?> request) {
-		addRequest(parentTag, request, FastVolley.newShortRetryPolicy());
-	}
+    public void addShortRequest(String parentTag, Request<?> request) {
+        addRequest(parentTag, request, FastVolley.newShortRetryPolicy());
+    }
 
-	public void addRequest(String parentTag, Request<?> request, RetryPolicy retryPolicy) {
-		if (request == null) {
-			return;
-		}
-		//
+    public void addRequest(String parentTag, Request<?> request, RetryPolicy retryPolicy) {
+        if (request == null) {
+            return;
+        }
+        //
 //		if (!NetUtils.isNetWorkConnected(MyApplication.getInstance())) {
 //			request.deliverError(new VolleyError(new NetworkError()));
 //			return;
 //		}
-		if (retryPolicy == null) {
-			retryPolicy = FastVolley.newShortRetryPolicy();
-		}
-		request.setRetryPolicy(retryPolicy);
-
-		request.setTag(getRequestTag(parentTag, request.getTag()));
-		mRequestQueue.add(request);
-	}
-
-	private static String getRequestTag(String parentTag, Object realTag) {
-		if (realTag == null) {
-			return parentTag;
-		} else {
-			return realTag + Integer.toHexString(realTag.hashCode());
-		}
-	}
-
-	public void cancelAll(String parentTag, Object tag) {
-		mRequestQueue.cancelAll(getRequestTag(parentTag, tag));
-	}
-
-	public void cancelAll(final String parentTag) {
-		mRequestQueue.cancelAll(new RequestQueue.RequestFilter() {
-			@Override
-			public boolean apply(Request<?> arg0) {
-				Object tag = arg0.getTag();
-				if (tag == null) {
-					return false;
-				}
-				if (tag instanceof String) {
-					return ((String) tag).indexOf(parentTag) != -1;
-				}
-				return false;
-			}
-		});
-	}
-
-	/* 请求一次,重试两次,最长请求时间可达30s,5s+10s+15s,普通接口使用此默认配置 */
-	public static DefaultRetryPolicy newDefaultRetryPolicy() {
-		return new DefaultRetryPolicy(5000, 2, 1);
-	}
-
-	/* 请求一次,重试0次,最长请求时间可达5s,一些很小的数据请求用此接口 */
-	public static DefaultRetryPolicy newShortRetryPolicy() {
-		return new DefaultRetryPolicy(5000, 0, 0);
-	}
-	
+        if (retryPolicy == null) {
+            retryPolicy = FastVolley.newShortRetryPolicy();
+        }
+        request.setRetryPolicy(retryPolicy);
+
+        request.setTag(getRequestTag(parentTag, request.getTag()));
+        mRequestQueue.add(request);
+    }
+
+    private static String getRequestTag(String parentTag, Object realTag) {
+        if (realTag == null) {
+            return parentTag;
+        } else {
+            return realTag + Integer.toHexString(realTag.hashCode());
+        }
+    }
+
+    public void cancelAll(String parentTag, Object tag) {
+        mRequestQueue.cancelAll(getRequestTag(parentTag, tag));
+    }
+
+    public void cancelAll(final String parentTag) {
+        mRequestQueue.cancelAll(new RequestQueue.RequestFilter() {
+            @Override
+            public boolean apply(Request<?> arg0) {
+                Object tag = arg0.getTag();
+                if (tag == null) {
+                    return false;
+                }
+                if (tag instanceof String) {
+                    return ((String) tag).indexOf(parentTag) != -1;
+                }
+                return false;
+            }
+        });
+    }
+
+    /* 请求一次,重试两次,最长请求时间可达30s,5s+10s+15s,普通接口使用此默认配置 */
+    public static DefaultRetryPolicy newDefaultRetryPolicy() {
+        return new DefaultRetryPolicy(5000, 2, 1);
+    }
+
+    /* 请求一次,重试0次,最长请求时间可达5s,一些很小的数据请求用此接口 */
+    public static DefaultRetryPolicy newShortRetryPolicy() {
+        return new DefaultRetryPolicy(5000, 0, 0);
+    }
+
 }

+ 55 - 2
app_core/network/src/main/java/com/me/network/app/http/ssl/TrustAllCerts.java

@@ -1,17 +1,29 @@
 package com.me.network.app.http.ssl;
 
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
 /**
  * Created by Arison on 2017/5/15.
  */
 public class TrustAllCerts implements X509TrustManager {
+    private static TrustManager[] trustManagers;
+    private static final X509Certificate[] _AcceptedIssuers = new
+            X509Certificate[]{};
+
     @Override
     public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
-        
+
     }
 
     @Override
@@ -19,8 +31,49 @@ public class TrustAllCerts implements X509TrustManager {
 
     }
 
+    public boolean isClientTrusted(X509Certificate[] chain) {
+        return true;
+    }
+
+    public boolean isServerTrusted(X509Certificate[] chain) {
+        return true;
+    }
+
     @Override
     public X509Certificate[] getAcceptedIssuers() {
-        return new X509Certificate[0];
+        return _AcceptedIssuers;
+    }
+
+    /**
+     * 信任所有证书
+     */
+    public static void allowAllSSL() {
+        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
+
+            @Override
+            public boolean verify(String arg0, SSLSession arg1) {
+
+                return true;
+            }
+
+        });
+
+        SSLContext context = null;
+        if (trustManagers == null) {
+            trustManagers = new TrustManager[]{
+                    new TrustAllCerts()
+            };
+        }
+
+        try {
+            context = SSLContext.getInstance("TLS");
+            context.init(null, trustManagers, new SecureRandom());
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        } catch (KeyManagementException e) {
+            e.printStackTrace();
+        }
+
+        HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
     }
 }

+ 1 - 1
app_modular/applogin/src/main/java/com/modular/login/activity/LoginActivity.java

@@ -46,7 +46,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
 
     private TextView tv_register;
     private TextView tv_findPwd;
- 
+
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {