zoukankan      html  css  js  c++  java
  • CloseableHttpClient 和 OkHttpClient跳过证书验证

    一:CloseableHttpClient 

    public static String doPostJson(String url, String json) {
    	// 创建Httpclient对象
    	CloseableHttpClient httpClient = HttpClients.createDefault();
    	CloseableHttpResponse response = null;
    	String resultString = "";
    	try {
    		if (url.indexOf("https") != -1) {
    			httpClient = HttpClients.custom()
    					.setSSLSocketFactory(new SSLConnectionSocketFactory(
    							SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build()))
    					.build();
    		}
    		// 创建Http Post请求
    		HttpPost httpPost = new HttpPost(url);
    		// 创建请求内容
    		StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
    		httpPost.setEntity(entity);
    		// 执行http请求
    		response = httpClient.execute(httpPost);
    		resultString = EntityUtils.toString(response.getEntity(), "utf-8");
    	} catch (Exception e) {
    		e.printStackTrace();
    	} finally {
    		try {
    			response.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	return resultString;
    }
    

    二:OkHttpClient 

    OkHttpClient okHttpClient = new OkHttpClient.Builder().readTimeout(60, TimeUnit.SECONDS)
    				.connectTimeout(60, TimeUnit.SECONDS)
    				.sslSocketFactory(SSLSocketClient.getSSLSocketFactory(), SSLSocketClient.getX509TrustManager())
    				.hostnameVerifier(SSLSocketClient.getHostnameVerifier()).build();
    
    import javax.net.ssl.*;
    import java.security.KeyStore;
    import java.security.SecureRandom;
    import java.security.cert.X509Certificate;
    import java.util.Arrays;
    
    public class SSLSocketClient {
    
    	/**
    	 * 获取这个SSLSocketFactory
    	 */
    	public static SSLSocketFactory getSSLSocketFactory() {
    		try {
    			SSLContext sslContext = SSLContext.getInstance("SSL");
    			sslContext.init(null, getTrustManager(), new SecureRandom());
    			return sslContext.getSocketFactory();
    		} catch (Exception e) {
    			throw new RuntimeException(e);
    		}
    	}
    
    	/**
    	 * 获取TrustManager
    	 */
    	private static TrustManager[] getTrustManager() {
    		return new TrustManager[] { new X509TrustManager() {
    			@Override
    			public void checkClientTrusted(X509Certificate[] chain, String authType) {
    			}
    
    			@Override
    			public void checkServerTrusted(X509Certificate[] chain, String authType) {
    			}
    
    			@Override
    			public X509Certificate[] getAcceptedIssuers() {
    				return new X509Certificate[] {};
    			}
    		} };
    	}
    
    	/**
    	 * 获取HostnameVerifier
    	 */
    	public static HostnameVerifier getHostnameVerifier() {
    		return (s, sslSession) -> true;
    	}
    
    	public static X509TrustManager getX509TrustManager() {
    		X509TrustManager trustManager = null;
    		try {
    			TrustManagerFactory trustManagerFactory = TrustManagerFactory
    					.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    			trustManagerFactory.init((KeyStore) null);
    			TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
    			if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
    				throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
    			}
    			trustManager = (X509TrustManager) trustManagers[0];
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    		return trustManager;
    	}
    
    }
    

      

     参考文章:https://www.cnblogs.com/todarcy/p/15104125.html

                       

      

      

  • 相关阅读:
    asp.net常用的javascript经典例子
    Silverlight学习之——布局系统
    TreeView数据绑定方法
    软件测试:单元测试的一些疑问
    Silverlight学习之——Deep Zoom文件格式概述
    把生活节奏调整得慢一点
    20、Windows内核函数(1)Windows驱动开发详解笔记,字符串
    24、Windows派遣函数(2)Windows驱动开发详解笔记,直接读写方式
    21、Windows内核函数(2)Windows驱动开发详解笔记,文件操作
    27、Windows内核编程,IRP的同步(1)
  • 原文地址:https://www.cnblogs.com/haoliyou/p/15157329.html
Copyright © 2011-2022 走看看