zoukankan      html  css  js  c++  java
  • Java通过OKHttp发送https请求(忽略认证)

    封装:

    package gj.okhttp3;
    
    import okhttp3.OkHttpClient;
    
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.SSLSocketFactory;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;
    import java.security.KeyManagementException;
    import java.security.NoSuchAlgorithmException;
    
    /**
     * Author: areful
     * Date: 2019/2/15
     */
    public class OKHttpClientBuilder {
        public static OkHttpClient.Builder buildOKHttpClient() {
            try {
                TrustManager[] trustAllCerts = buildTrustManagers();
                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((hostname, session) -> true);
                return builder;
            } catch (NoSuchAlgorithmException | KeyManagementException e) {
                e.printStackTrace();
                return new OkHttpClient.Builder();
            }
        }
    
        private static TrustManager[] buildTrustManagers() {
            return 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[]{};
                        }
                    }
            };
        }
    }
    

    测试:

    package gj.okhttp3;
    
    import okhttp3.*;
    
    import java.io.IOException;
    import java.util.HashMap;
    
    /**
     * Author: areful
     * Date: 2019/2/15
     */
    public class TestOKHttpClientBuilder {
        public static void main(String[] args) {
            MediaType JSON = MediaType.parse("application/json; charset=utf-8");
            String url = "https://www.baidu.com";
            String json = "{}";
            Request request = new Request.Builder()
                    .url(url)
                    .headers(Headers.of(new HashMap<>()))
                    .post(RequestBody.create(JSON, json))
                    .build();
            OKHttpClientBuilder.buildOKHttpClient()
                    .build()
                    .newCall(request)
                    .enqueue(new Callback() {
                        @Override
                        public void onFailure(Call call, IOException e) {
                            System.out.println("onFailure()");
                            e.printStackTrace();
                        }
    
                        @Override
                        public void onResponse(Call call, Response response) {
                            System.out.println("onResponse()");
                        }
                    });
        }
    }
    

      

  • 相关阅读:
    难以捉摸?机器学习模型的可解释性初探
    什么是边缘计算?它将如何补充5G?
    2021年将会成为主流的四个云计算技术
    中国SaaS这个局,AI能破吗?
    边缘计算点燃新风暴,IT与OT之战一触即发
    为什么保护云安全是一个数学问题
    物联网中的热门IT技能
    2021 区块链及数字货币9大展望
    边缘计算将取代云计算?5G时代的最强黑马出现了吗?
    2021年区块链十大发展趋势:那些偶然中的必然
  • 原文地址:https://www.cnblogs.com/areful/p/10381859.html
Copyright © 2011-2022 走看看