• HttpClient SSL示例(转)


    原文地址:

    http://www.cnblogs.com/jerry19890622/p/4291053.html

    package com.jerry.httpclient;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.security.KeyStore;
    
    import javax.net.ssl.SSLContext;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.conn.ssl.SSLContexts;
    import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    /**
     * 
     * @author Jerry
     * @date 2015年2月12日 下午11:38:33
     */
    public class SSLDemo {
        
        public static final String KEY_STORE_TYPE_JKS = "jks";  
        public static final String KEY_STORE_TYPE_P12 = "PKCS12";   
        
        public static void main(String[] args) throws Exception{
            KeyStore keyStore = KeyStore.getInstance(KEY_STORE_TYPE_P12);//服务器发给浏览器的KeyStore
            KeyStore trustStore = KeyStore.getInstance(KEY_STORE_TYPE_JKS);//浏览器发给服务器的KeyStore
            FileInputStream input = new FileInputStream(new File("d:\tomcat.keystore"));
            FileInputStream keyInput = new FileInputStream("d:\mykey.p12");
            trustStore.load(input, "123456".toCharArray());
            keyStore.load(keyInput, "123456".toCharArray());
            /*
             * 使用2个keystore创建sslcontext
             */
            SSLContext sslContext = SSLContexts.custom().useTLS().
                                loadTrustMaterial(trustStore, new TrustSelfSignedStrategy())
                                .loadKeyMaterial(keyStore, "123456".toCharArray())
                                .build();
            //通过sllcontext创建一个socket factory
            SSLConnectionSocketFactory sslFactory = new SSLConnectionSocketFactory(sslContext);
            CloseableHttpClient client = HttpClients.custom().setSSLSocketFactory(sslFactory).build();
            HttpGet get = new HttpGet("https://localhost:8443/services");
            System.out.println("executing request: " + get.getRequestLine());
            CloseableHttpResponse response = client.execute(get);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                System.out.println("response content lenght: " + entity.getContentLength());
            }
            System.out.println(EntityUtils.toString(entity));
            EntityUtils.consume(entity);
        }
    }
    
  • 相关阅读:
    STM32|4-20mA输出电路
    Delphi版IP地址与整型互转
    侧方位停车
    98年的‘风暴’,08年的‘危机’,18年的“钱荒‘’
    一些软件设计的原则
    oracle-数据库的各种-锁-详解
    演员李艾佳去世突发病征年仅36岁
    【人生】王石:没变强是因为你太舒服
    耐心看的人早晚会成人上人
    Linux之make的用法讲解
  • 原文地址:https://www.cnblogs.com/laoniu85/p/5286847.html
Copyright © 2020-2023  润新知