• andorid HTTPS 不需要证书 VolleyEror: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not fou


    1.加证书(这里不说)

    2.修改代码

    import java.security.KeyManagementException;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;
    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 Administrator on 2016/2/17.
    */
    public class FakeX509TrustManager implements X509TrustManager {

       private static TrustManager[] trustManagers;
       private static final X509Certificate[] _AcceptedIssuers = new
               X509Certificate[] {};

       @Override
       public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
           //To change body of implemented methods use File | Settings | File Templates.
       }

       @Override
       public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) throws java.security.cert.CertificateException {
           //To change body of implemented methods use File | Settings | File Templates.
       }

       public boolean isClientTrusted(X509Certificate[] chain) {
           return true;
       }

       public boolean isServerTrusted(X509Certificate[] chain) {
           return true;
       }

       @Override
       public X509Certificate[] getAcceptedIssuers() {
           return _AcceptedIssuers;
       }

       public static void allowAllSSL() {
           HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {

               @Override
               public boolean verify(String arg0, SSLSession arg1) {
                   // TODO Auto-generated method stub
                   return true;
               }

           });

           SSLContext context = null;
           if (trustManagers == null) {
               trustManagers = new TrustManager[] { new FakeX509TrustManager() };
           }

           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());
       }

    }

    在调用网络前使用

    FakeX509TrustManager.allowAllSSL(); //it is dangerous!但是有的时候我们需要这样做!!       //========================StringRequest=====================================================       StringRequest httpRequest = new StringRequest(requestMethod, url, new Response.Listener<String>() {           @Override           public void onResponse(String response) { 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 相关阅读:
    UItableView的cell重用机制
    iOS开发中常遇到的面试题
    iOS UIScrollView 的基本用法
    iOS的CocoaPods手动挡到自动挡到导入第三方框架 转发
    iOS之NSPredicate(正则表达式和UIBarController):谓词
    iOS UISearchController 搜索框
    PHP 基本用法及基本知识点
    iOS 九宫格的实现
    iOS XML 系统自带的解析方法
    iOS xml文件的解析方式 XMLDictionary,GDataXMLNode,NSXMLParser 转发自徒步天涯
  • 原文地址:https://www.cnblogs.com/rollrock/p/6844578.html
Copyright © 2020-2023  润新知