zoukankan      html  css  js  c++  java
  • okhttp 访问未认证自签证书 https ssl web.md

    Accepting self-signed certificates in OKHttp3 (codavel.com)

    验证可行

    package com.github.cclient.utils;
    
    import okhttp3.*;
    
    import javax.net.ssl.*;
    import java.io.IOException;
    import java.security.KeyManagementException;
    import java.security.NoSuchAlgorithmException;
    import java.security.cert.CertificateException;
    
    public class HttpsUtil {
        public static final MediaType JSON
                = MediaType.get("application/json; charset=utf-8");
    
        static private OkHttpClient getUnsafeOkHttpClient() {
            try {
                final TrustManager[] trustAllCerts = new TrustManager[]{
                        new X509TrustManager() {
    
                            @Override
                            public void checkClientTrusted(java.security.cert.X509Certificate[] chain,
                                                           String authType) {
                            }
    
                            @Override
                            public void checkServerTrusted(java.security.cert.X509Certificate[] chain,
                                                           String authType) {
                            }
                            @Override
                            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                                return new java.security.cert.X509Certificate[]{};
                            }
                        }
                };
    
    //            final SSLContext sslContext = SSLContext.getInstance(SSL);
                final SSLContext sslContext = SSLContext.getInstance("SSL");
                sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
    
                final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
    
                OkHttpClient.Builder builder = new OkHttpClient.Builder();
                builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
    
                builder.hostnameVerifier(new HostnameVerifier() {
                    @Override
                    public boolean verify(String hostname, SSLSession session) {
                        return true;
                    }
                });
    
                return builder.build();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        public static String post(String url, String json) throws IOException {
            OkHttpClient client = getUnsafeOkHttpClient();
            RequestBody body = RequestBody.create(json,JSON);
            Request request = new Request.Builder()
                    .url(url)
                    .post(body)
                    .build();
            try (Response response = client.newCall(request).execute()) {
                return response.body().string();
            }
        }
        public static String get(String url) throws IOException {
            OkHttpClient client = getUnsafeOkHttpClient();
            Request request = new Request.Builder()
                    .url(url)
                    .get()
                    .build();
            try (Response response = client.newCall(request).execute()) {
                return response.body().string();
            }
        }
    
    }
    
    
  • 相关阅读:
    TSP(Traveling Salesman Problem)-----浅谈旅行商问题(动态规划,回溯实现)
    浅谈Java虚拟机内存中的对象创建,内存布局,访问定位
    Java设计模式---桥接Bridge模式
    Java设计模式---Strategy策略模式
    Java设计模式---ChainOfResponsibility责任链模式
    《前端工程化体系设计与实践》-笔记
    React 16.x 新特性思维导图
    javascript语言精粹-笔记
    react+redux+Instagram
    链表
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/14575125.html
Copyright © 2011-2022 走看看