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

      

  • 相关阅读:
    Java线程:线程的交互
    Java线程:线程的同步与锁
    重载,继承,重写和多态的区别
    Java线程:线程状态的转换
    Java线程:线程栈模型与线程的变量
    Java线程:创建与启动
    Java线程:概念与原理
    Android上dip、dp、px、sp等单位说明
    Java学习之路:不走弯路,就是捷径
    谷歌大牛 Rob Pike 的 5 个编程原则
  • 原文地址:https://www.cnblogs.com/areful/p/10381859.html
Copyright © 2011-2022 走看看