1. 程式人生 > >java https post (帶證書的)

java https post (帶證書的)

  1. import java.io.BufferedReader;  
  2. import java.io.FileInputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStreamReader;  
  5. import java.net.MalformedURLException;  
  6. import java.net.URL;  
  7. import java.security.GeneralSecurityException;  
  8. import java.security.KeyStore;  
  9. import javax.net.ssl.HostnameVerifier;  
  10. import javax.net.ssl.HttpsURLConnection;  
  11. import javax.net.ssl.KeyManagerFactory;  
  12. import javax.net.ssl.SSLContext;  
  13. import javax.net.ssl.TrustManagerFactory;  
  14. publicclass HttpsPost {  
  15.     /** 
  16.      * 獲得KeyStore. 
  17.      * @param keyStorePath 
  18.      *            金鑰庫路徑 
  19.      * @param password 
  20.      *            密碼
     
  21.      * @return 金鑰庫 
  22.      * @throws Exception 
  23.      */
  24.     publicstatic KeyStore getKeyStore(String password, String keyStorePath)  
  25.             throws Exception {  
  26.         // 例項化金鑰庫 KeyStore用於存放證書,建立物件時 指定交換數字證書的加密標準
            //指定交換數字證書的加密標準 
  27.         KeyStore ks = KeyStore.getInstance("JKS");  
  28.         // 獲得金鑰庫檔案流
  29.         FileInputStream is = new FileInputStream(keyStorePath);  
  30.         // 載入金鑰庫
  31.         ks.load(is, password.toCharArray());  
  32.         // 關閉金鑰庫檔案流
  33.         is.close();  
  34.         return ks;  
  35.     }  
  36.     /** 
  37.      * 獲得SSLSocketFactory. 
  38.      * @param password 
  39.      *            密碼 
  40.      * @param keyStorePath 
  41.      *            金鑰庫路徑 
  42.      * @param trustStorePath 
  43.      *            信任庫路徑 
  44.      * @return SSLSocketFactory 
  45.      * @throws Exception 
  46.      */
  47.     publicstatic SSLContext getSSLContext(String password,  
  48.             String keyStorePath, String trustStorePath) throws Exception {  
  49.         // 例項化金鑰庫   KeyManager選擇證書證明自己的身份
  50.         KeyManagerFactory keyManagerFactory = KeyManagerFactory  
  51.                 .getInstance(KeyManagerFactory.getDefaultAlgorithm());  
  52.         // 獲得金鑰庫
  53.         KeyStore keyStore = getKeyStore(password, keyStorePath);  
  54.         // 初始化金鑰工廠
  55.         keyManagerFactory.init(keyStore, password.toCharArray());  
  56.         // 例項化信任庫    TrustManager決定是否信任對方的證書
  57.         TrustManagerFactory trustManagerFactory = TrustManagerFactory  
  58.                 .getInstance(TrustManagerFactory.getDefaultAlgorithm());  
  59.         // 獲得信任庫
  60.         KeyStore trustStore = getKeyStore(password, trustStorePath);  
  61.         // 初始化信任庫
  62.         trustManagerFactory.init(trustStore);  
  63.         // 例項化SSL上下文
  64.         SSLContext ctx = SSLContext.getInstance("TLS");  
  65.         // 初始化SSL上下文
  66.         ctx.init(keyManagerFactory.getKeyManagers(),  
  67.                 trustManagerFactory.getTrustManagers(), null);  
  68.         // 獲得SSLSocketFactory
  69.         return ctx;  
  70.     }  
  71.     /** 
  72.      * 初始化HttpsURLConnection. 
  73.      * @param password 
  74.      *            密碼 
  75.      * @param keyStorePath 
  76.      *            金鑰庫路徑 
  77.      * @param trustStorePath 
  78.      *            信任庫路徑 
  79.      * @throws Exception 
  80.      */
  81.     publicstaticvoid initHttpsURLConnection(String password,  
  82.             String keyStorePath, String trustStorePath) throws Exception {  
  83.         // 宣告SSL上下文
  84.         SSLContext sslContext = null;  
  85.         // 例項化主機名驗證介面
  86.         HostnameVerifier hnv = new MyHostnameVerifier();  
  87.         try {  
  88.             sslContext = getSSLContext(password, keyStorePath, trustStorePath);  
  89.         } catch (GeneralSecurityException e) {  
  90.             e.printStackTrace();  
  91.         }  
  92.         if (sslContext != null) {  
  93.             HttpsURLConnection.setDefaultSSLSocketFactory(sslContext  
  94.                     .getSocketFactory());  
  95.         }  
  96.         HttpsURLConnection.setDefaultHostnameVerifier(hnv);  
  97.     }  
  98.     /** 
  99.      * 傳送請求. 
  100.      * @param httpsUrl 
  101.      *            請求的地址 
  102.      * @param xmlStr 
  103.      *            請求的資料 
  104.      */
  105.     publicstaticvoid post(String httpsUrl, String xmlStr) {  
  106.         HttpsURLConnection urlCon = null;  
  107.         try {  
  108.             urlCon = (HttpsURLConnection) (new URL(httpsUrl)).openConnection();  
  109.             urlCon.setDoInput(true);  
  110.             urlCon.setDoOutput(true);  
  111.             urlCon.setRequestMethod("POST");  
  112.             urlCon.setRequestProperty("Content-Length",  
  113.                     String.valueOf(xmlStr.getBytes().length));  
  114.             urlCon.setUseCaches(false);  
  115.             //設定為gbk可以解決伺服器接收時讀取的資料中文亂碼問題
  116.             urlCon.getOutputStream().write(xmlStr.getBytes("gbk"));  
  117.             urlCon.getOutputStream().flush();  
  118.             urlCon.getOutputStream().close();  
  119.             BufferedReader in = new BufferedReader(new InputStreamReader(  
  120.                     urlCon.getInputStream()));  
  121.             String line;  
  122.             while ((line = in.readLine()) != null) {  
  123.                 System.out.println(line);  
  124.             }  
  125.         } catch (MalformedURLException e) {  
  126.             e.printStackTrace();  
  127.         } catch (IOException e) {  
  128.             e.printStackTrace();  
  129.         } catch (Exception e) {  
  130.             e.printStackTrace();  
  131.         }  
  132.     }  
  133.     /** 
  134.      * 測試方法. 
  135.      * @param args 
  136.      * @throws Exception 
  137.      */
  138.     publicstaticvoid main(String[] args) throws Exception {  
  139.         // 密碼
  140.         String password = "123456";  
  141.         // 金鑰庫
  142.         String keyStorePath = "tomcat.keystore";  
  143.         // 信任庫
  144.         String trustStorePath = "tomcat.keystore";  
  145.         // 本地起的https服務
  146.         String httpsUrl = "https://localhost:8443/service/httpsPost";  
  147.         // 傳輸文字
  148.         String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><fruitShop><fruits><fruit>&lt;kind>蘿蔔</kind></fruit><fruit><kind>菠蘿</kind></fruit></fruits></fruitShop>";  
  149.         HttpsPost.initHttpsURLConnection(password, keyStorePath, trustStorePath);  
  150.         // 發起請求
  151.         HttpsPost.post(httpsUrl, xmlStr);  
  152.     }  
  153. }  

  1. import javax.net.ssl.HostnameVerifier;  
  2. import javax.net.ssl.SSLSession;  
  3. /** 
  4.  * 實現用於主機名驗證的基介面。  
  5.  * 在握手期間,如果 URL 的主機名和伺服器的標識主機名不匹配,則驗證機制可以回撥此介面的實現程式來確定是否應該允許此連線。 
  6.  */
  7. publicclass MyHostnameVerifier implements HostnameVerifier {  
  8.     @Override
  9.     publicboolean verify(String hostname, SSLSession session) {  
  10.         if("localhost".equals(hostname)){  
  11. 相關推薦

    java https post (證書的)

    import java.io.BufferedReader;   import java.io.FileInputStream;   import java.io.IOException;   import java.io.InputStreamReader;   import java.net.Mal

    Java Https工具類,Java Https Post請求

    Java Https工具類,Java Https Post請求   ================================ ©Copyright 蕃薯耀 2019-01-08 http://fanshuyao.iteye.com/   一、使用jsoup進行

    java https 忽略證書 過期方式

    sets apache pic pcm gis aps div 調用接口 puts package com.sprucetec.pop.product.util; import java.security.cert.CertificateException; impo

    JavapostHTTPS)請求-----接口測試

    eat class tin hostname ted buffered lin hat tls 這個是忽略證書的辦法 1 package com.ju.util; 2 3 4 import java.io.BufferedReader; 5 imp

    C# HttpClient 證書https 請求

    1. 將證書安裝到伺服器上開始 -> 執行 ->輸入 mmc 進入控制檯介面2.  選擇 “證書” ->“計算機賬戶”->“下一步”->“完成”3. 選擇相關的證書進行匯入工具預設安裝的目錄為: C:\Program Files (x86)\Wi

    java傳送https post請求例項

    用於進行Https請求的HttpClient  SSLClient.Java import java.security.cert.CertificateException;  

    java傳送https post請求例項

    用於進行Https請求的HttpClient  SSLClient.java import java.security.cert.CertificateException; import java.

    Java傳送httpPost請求證書

    /** * 帶證書httpPost請求 * @param url 介面地址 * @param param 引數 * @return * @throws Exception */ public stati

    httpClient4.1傳送https報文請求,證書,簽名

    這個方法時我測試了目前網上的commons-httpclient所提供的方法,根據HTTP請求改造的,那個測試沒有通過,這個是完全根據官方最新版的httpclinet4.1的英文文件以及example來做的,比較靠譜,當前前提是你的證書已經拆分好,這個可以找到相關的很多資

    java實現 HTTP/HTTPS請求繞過證書檢測程式碼實現

    1、開發需求 需要實現在服務端發起HTTP/HTTPS請求,訪問其他程式資源。 2、URLConnection和HTTPClient的比較 HttpClient是個很不錯的開源框架,封裝了訪問http的請求頭,引數,內容體,響應等等, De

    JDK自工具keytool生成ssl證書https自生成證書並配置到jboss和tomcat中)

    1:什麼是HTTPS? HTTPS其實是有兩部分組成:HTTP + SSL / TLS, 也就是在HTTP上又加了一層處理加密資訊的模組,並且會進行身份的驗證。 問題: Firebug和postman之類的瀏覽器除錯工具,為什麼獲取到的是明文? 解答: SSL

    java https繞過伺服器端證書

    整這個程式碼真有夠麻煩的。 先說原理吧,https網站伺服器都是有證書的! 之所以google和12306表現不一,是因為12306的證書是什麼 “SRCA”,鐵道部自己的CA伺服器簽發的,並不被瀏覽器或作業系統(至少我的firefox就不認它)廣泛接受! Google的

    java連線https時禁用證書驗證.

    import java.io.File; import java.security.cert.CertificateException; import java.util.List; import java.util.Map; import javax.net.ssl.S

    Java程式避開SSL證書問題訪問https網站

    部分原創,參考:參考:http://tanyongbing.iteye.com/blog/1855132在專案開發中,有時會遇到與SSL安全證書匯入打交道的,如何把證書匯入java中的cacerts證書庫呢? 其實很簡單,方法如下: 每一步:使用Firefox瀏覽器,進入某個

    java HttpClient POST請求

    簡單 div mes rac mstr eth cep reat stack 一個簡單的HttpClient POST 請求實例 package com.httpclientget; import java.awt.List; import java.util.Arra

    idhttp提交post參數並上cookie

    tom page spa get 提交 clear lang 事件 lines 有這麽一個提交連接 http://www.XXXXXX.com/test.php?p1=411328&p2=1&d1=HeroSkinList 一共有三個參數[p1] [p

    python3 urllib.requesturlopen 一個https 時ssl證書錯誤!

    使用 就會 cert http ssl req pen urllib erro 不知道從那個版本起,python用urlopen打開一個https時會驗證一次 SSL 證書,當目標使用的是自簽名的證書時就會爆出一個 <urlopen error [SSL: CERT

    JAVA代碼-數字證書公私鑰生成-公鑰cer ,私鑰jks, pfx格式

    else generator actor issue 自己 bytearray 私鑰 公私鑰 throws import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre

    HTTPS請求 SSL證書驗證

    cer import failed blog kit urllib2 highlight www. header import urllib2 url = "https://www.12306.cn/mormhweb/" headers = {"User-Agent"

    xutils工具上傳日誌文件--使用https並且進度條顯示

    throw muti inpu side ica nts app開發 stp pfile package logback.ecmapplication.cetcs.com.myapplication; import android.app.Activity; impor