<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ice world

    There is nothing too difficult if you put your heart into it.
    posts - 104, comments - 103, trackbacks - 0, articles - 0
    本演示例程是繼Java Tomcat SSL 服務端/客戶端雙向認證(一),密鑰庫可證書的生成腳本不再重復黏貼,僅僅是用程序來代替瀏覽器訪問服務端。
    例程中使用到了Apache HttpClient庫,版本為4.1.3
    全部依賴庫:
    commons-logging-1.1.1.jar
    httpclient-4.1.3.jar
    httpcore-4.1.4.jar
    httpmime-4.1.3.jar(上傳文件使用)

    在(一)中的程序包中創建一個客戶端類:HttpsClient
    HttpsClient.java
    package com.icesoft.client;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.security.KeyStore;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.conn.scheme.Scheme;
    import org.apache.http.conn.ssl.SSLSocketFactory;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;

    public class HttpsClient {
       
       
    private static final String KEY_STORE_TYPE_JKS = "jks";
       
    private static final String KEY_STORE_TYPE_P12 = "PKCS12";
       
    private static final String SCHEME_HTTPS = "https";
       
    private static final int HTTPS_PORT = 8443;
       
    private static final String HTTPS_URL = "https://127.0.0.1:8443/HttpClientSSL/sslServlet";
       
    private static final String KEY_STORE_CLIENT_PATH = "E:/ssl/client.p12";
       
    private static final String KEY_STORE_TRUST_PATH = "E:/ssl/client.truststore";
       
    private static final String KEY_STORE_PASSWORD = "123456";
       
    private static final String KEY_STORE_TRUST_PASSWORD = "123456";

       
    public static void main(String[] args) throws Exception {
            ssl();
        }

       
       
    private static void ssl() throws Exception {
            HttpClient httpClient
    = new DefaultHttpClient();
           
    try {
                KeyStore keyStore 
    = KeyStore.getInstance(KEY_STORE_TYPE_P12);
                KeyStore trustStore 
    = KeyStore.getInstance(KEY_STORE_TYPE_JKS);
                InputStream ksIn
    = new FileInputStream(KEY_STORE_CLIENT_PATH);
                InputStream tsIn
    = new FileInputStream(new File(KEY_STORE_TRUST_PATH));
               
    try {
                    keyStore.load(ksIn, KEY_STORE_PASSWORD.toCharArray());
                    trustStore.load(tsIn, KEY_STORE_TRUST_PASSWORD.toCharArray());
                }
    finally {
                   
    try { ksIn.close(); } catch (Exception ignore) {}
                   
    try { tsIn.close(); } catch (Exception ignore) {}
                }

                SSLSocketFactory socketFactory
    = new SSLSocketFactory(keyStore, KEY_STORE_PASSWORD, trustStore);
                Scheme sch
    = new Scheme(SCHEME_HTTPS, HTTPS_PORT, socketFactory);
                httpClient.getConnectionManager().getSchemeRegistry().register(sch);
                HttpGet httpget
    = new HttpGet(HTTPS_URL);
                System.out.println(
    "executing request" + httpget.getRequestLine());
                HttpResponse response
    = httpClient.execute(httpget);
                HttpEntity entity
    = response.getEntity();
                System.out.println(
    "----------------------------------------");
                System.out.println(response.getStatusLine());
               
    if (entity != null) {
                    System.out.println(
    "Response content length: " + entity.getContentLength());
                    BufferedReader bufferedReader
    = new BufferedReader(new InputStreamReader(entity.getContent()));
                    String text;
                   
    while ((text = bufferedReader.readLine()) != null) {
                        System.out.println(text);
                    }

                    bufferedReader.close();
                }

                EntityUtils.consume(entity);
            }
    finally {
                httpClient.getConnectionManager().shutdown();
            }

        }


    }



    啟動Tomcat,運行HttpsClient,控制臺返回:


    OK,和使用瀏覽器訪問得到的結果一模一樣!

    全文完!

    Feedback

    # re: Java Tomcat SSL 服務端/客戶端雙向認證のApache HttpClient(二)  回復  更多評論   

    2013-05-14 10:01 by zhyg
    為什么我的一直是“這是一個HTTPS請求,但是沒有可用的客戶端證書”?
    主站蜘蛛池模板: 国产大陆亚洲精品国产| 亚洲精品综合一二三区在线| 免费无码成人AV片在线在线播放 | 亚洲一本综合久久| 国产亚洲AV无码AV男人的天堂| 自拍偷自拍亚洲精品情侣| 国产亚洲色婷婷久久99精品91| 亚洲精品成人片在线播放| 亚洲乱码一区二区三区在线观看| 亚洲综合伊人久久大杳蕉| 亚洲人色婷婷成人网站在线观看| 亚洲色精品vr一区二区三区| 亚洲国产精品无码AAA片| 亚洲成色在线影院| 亚洲成a人片在线观看中文app| 亚洲人成综合在线播放| 一区二区亚洲精品精华液| 亚洲精品乱码久久久久蜜桃 | 2019亚洲午夜无码天堂| 亚洲国产区男人本色| 国产亚洲男人的天堂在线观看 | 久久亚洲国产成人精品性色| 亚洲综合久久久久久中文字幕| 亚洲av片不卡无码久久| 亚洲国产欧美国产综合一区 | 免费人成在线观看播放a| 中文字幕免费在线播放| 一区二区免费视频| 久久久久久国产精品免费免费 | 99精品视频在线免费观看| 久久天天躁狠狠躁夜夜免费观看| 日韩激情无码免费毛片| 久久亚洲国产精品五月天婷| 精品无码一区二区三区亚洲桃色 | 亚洲综合一区二区精品久久| 中文字幕乱码亚洲无线三区| 免费国产高清毛不卡片基地| 青青操在线免费观看| 大学生一级毛片免费看| 亚洲精品国产va在线观看蜜芽| 亚洲成熟xxxxx电影|