zoukankan      html  css  js  c++  java
  • 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) { 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 相关阅读:
    Kafka技术内幕 读书笔记之(三) 消费者:高级API和低级API——消费者拉取数据
    Kafka技术内幕 读书笔记之(三) 消费者:高级API和低级API——消费者再平衡操作
    Kafka技术内幕 读书笔记之(三) 生产者——消费者:高级API和低级API——基础知识
    Kafka技术内幕 读书笔记之(三) 消费者:高级API和低级API——消费者启动和初始化
    Kafka技术内幕 读书笔记之(二) 生产者——服务端网络连接
    Kafka技术内幕 读书笔记之(二) 生产者——新生产者客户端
    Kafka技术内幕 读书笔记之(一) Kafka入门
    Kafka权威指南 读书笔记之(五)深入Kafka
    Kafka权威指南 读书笔记之(四)Kafka 消费者一一从 Kafka读取数据
    java 多文件合并成zip并下载
  • 原文地址:https://www.cnblogs.com/rollrock/p/6844578.html
Copyright © 2011-2022 走看看