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.         // 例項化金鑰庫
  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.         // 例項化金鑰庫
  50.         KeyManagerFactory keyManagerFactory = KeyManagerFactory  
  51.                 .getInstance(KeyManagerFactory.getDefaultAlgorithm());  
  52.         // 獲得金鑰庫
  53.         KeyStore keyStore = getKeyStore(password, keyStorePath);  
  54.         // 初始化金鑰工廠
  55.         keyManagerFactory.init(keyStore, password.toCharArray());  
  56.         // 例項化信任庫
  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(

    相關推薦

    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 傳送get post請求

    1、匯入jar <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId&

    java傳送http post請求

    import java.lang.reflect.Method; import java.net.HttpURLConnection; import java.util.ArrayList; import java.util.Iterator; import java.ut

    java傳送https請求

    import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.security.cert.CertificateException; i

    Java 傳送httpspost請求方法

    import java.io.BufferedReader;   import java.io.FileInputStream;   import java.io.IOException;   import java.io.InputStreamRead

    關於java傳送https請求 提示java.security.cert.CertificateException: No name matching xxxx found的解決方法

    1.這2天專案中需要呼叫外部介面,開始以為挺簡單的,後面使用HttpConnection傳送post請求出現了以下的錯誤資訊.通過觀察日誌中的錯誤資訊發現,應該是在建立HttpConnection的http連線的時候,出現了SSL安全認證的問題,通過查詢相關的資

    java介面自動化3——POST請求方法封裝過程和測試

    這個介面自動化測試框架到目前為止,我們已經完成了Get請求的封裝和必要的工具類的支援。接下來這篇,我來介紹如何完成POST請求的封裝過程。一般來說,在一個專案中,介面測試很多時候就是測試Get和POST方法,其他的請求方式的介面很少,佔的比重幾乎不計。所以,這個Java介面自動化測試框架的核心就是G

    java向伺服器post請求時首部欄位content-length的計算方法

    當java向伺服器post請求時,首部中有一個Content-length欄位,即請求主體中的位元組數。首部在主體的前面。不過,要寫入首部,需要知道主體的長度,而在寫首部的時候可能還不知道主體的長度。正常情況下,對於這個兩難的問題。 如圖所示 Java的

    Java Https工具類,Java Https Post請求

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

    java 通過傳送json,post請求,返回json資料

    import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java

    Java傳送HTTPS請求

    get public static String doGetStrs(String accessTokenUrl){ JSONObject jsonObject = null; try { // 建

    Java:HttpUtils :傳送get/post請求

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import jav

    JAVA 傳送https請求

    package com.linshang.mini.server.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamRe

    Java介面自動化測試框架設計-4-POST請求方法封裝過程和測試

           這個介面自動化測試框架到目前為止,我們已經完成了Get請求的封裝和必要的工具類的支援。接下來這篇,我來介紹如何完成POST請求的封裝過程。一般來說,在一個專案中,介面測試很多時候就是測試Get和POST方法,其他的請求方式的介面很少,佔的比重幾乎不計。所以,這個

    Java發送Post請求

    tostring lencod 發送post請求 length out int tab .get info //訪問準備 URL url = new URL("http:***"); //post參數 Map<St

    Http協議中GET和POST請求方法的區別

    出場 請求參數 底層 情況下 -type 過去 firefox url sym GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞

    get和post請求方法的區別

    外衣 log ati 技術 告訴 alt 怎麽 yahoo 鏈接 GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。 你可能自

    C# http常見的 Post請求方法

    一、帶data引數傳遞:                 string result = "";                 Htt

    Fiddler監聽Java應用程式http請求方法(Configure a Java Application to Use Fiddler)

    Fiddler官網:http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureJavaApp Configure a Java Application to Use Fiddler 要配置Java應用程式以向Fiddle