Pages

2011年8月13日 星期六

自動擷取憑證與Https頁面資料

在寫JSP使用Redirect的時候,如果是導向HTTPS頁面,也可能發生某些異常。
1. java.net.MalformedURLException: unknown protocol https
ANS: 使用的方法不是 HTTPS 的方式,將jce.jar與jsse.jar導入classpath,在使用https連線函式
2. 頁面停留過久
ANS: 就像打開IE一樣,會叫你點選接受憑證,這時用程式跑就自動停住了,居然不會timeout

  1. <%@ page import="java.net.URL"%>
  2. <%@ page import="java.net.URLEncoder"%>
  3. <%@ page import="java.net.URLConnection"%>
  4.  
  5. <%@ page import="javax.net.ssl.HttpsURLConnection"%>
  6. <%@ page import="javax.net.ssl.HostnameVerifier"%>
  7. <%@ page import="javax.net.ssl.HttpsURLConnection"%>
  8. <%@ page import="javax.net.ssl.SSLContext"%>
  9. <%@ page import="javax.net.ssl.SSLSession"%>
  10. <%@ page import="javax.net.ssl.TrustManager"%>
  11. <%@ page import="javax.net.ssl.X509TrustManager"%>
  12. <%@ page import="javax.security.cert.X509Certificate"%>
  13. <%@ page import="javax.security.cert.CertificateException"%>
  14. <%@ page import="java.security.SecureRandom"%>
  15.  
  16. /***
  17. * more code
  18. * skip
  19. */
  20.  
  21. /***********憑證擷取開始**************/
  22. TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
  23. public java.security.cert.X509Certificate[] getAcceptedIssuers() {
  24. return null;
  25. }
  26.  
  27. public void checkClientTrusted(java.security.cert.X509Certificate[] certs,String authType) {
  28. }
  29.  
  30. public void checkServerTrusted(java.security.cert.X509Certificate[] certs,String authType) {
  31. }
  32. } };
  33.  
  34. HostnameVerifier dummyHostnameVerifier = new HostnameVerifier() {
  35. public boolean verify(String hostname, SSLSession session) {
  36. return true;
  37. }
  38. };
  39. SSLContext sc = SSLContext.getInstance("SSL");
  40. sc.init(null, trustAllCerts, new SecureRandom());
  41. HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
  42. HttpsURLConnection.setDefaultHostnameVerifier(dummyHostnameVerifier);
  43. /***********憑證擷取結束**************/
  44.  
  45. /***********擷取HTTPS頁面開始**************/
  46. String httpsURL = "<https網址>"
  47. try{
  48. url = new URL(httpsURL);
  49.  
  50. Httpshurlconnection hurlc = (Httpshurlconnection) url.openConnection();
  51. hurlc.setRequestMethod("POST");
  52. InputStream inputStream = hurlc.getInputStream();
  53. LineNumberReader reader = new LineNumberReader(new InputStreamReader(inputStream));
  54. while (true) {
  55. tmp = reader.readLine();
  56. if (tmp == null)
  57. break;
  58. out.print(tmp);
  59. }
  60. } catch (Exception e) {
  61. e.printStack();
  62. }
  63. /***********憑證擷取結束**************/
  64.  
  65. /***
  66. * more code
  67. * skip
  68. */
  69.  

Related Posts:

  • 使用Triple DES 加密字串最近因為有需求,需要使用加密的方法來讓連線的帳號密碼用成亂碼來連線。 因此找到了使用 Tripple DES的方式加密字串。 1. 首先,先寄建立Decrypter與Encrypter package security.crypto; import java.io.UnsupportedEncodingException; import javax.crypto.Cipher; import javax.crypto.IllegalBloc… Read More
  • Java使用Tesseract進行OCR辨識的一些心得最近有個專案想抓取PDF的檔案內容,進行檔案rename的動作,因此才開始瞭解Tesseract相關的用法,以下是使用的一些心得。1. Windows上安裝Tesseract 5.0後,如果想轉移到其他台Windows PC,該PC要先安裝 Visual Studio 2015 的 Visual C++ 可轉散發套件,再將Tesseract安裝的目錄整個zip起來後,在其他台Windows PC上解壓縮後,設定Tesseract相關windows… Read More
  • 自動擷取憑證與Https頁面資料在寫JSP使用Redirect的時候,如果是導向HTTPS頁面,也可能發生某些異常。 1. java.net.MalformedURLException: unknown protocol https ANS: 使用的方法不是 HTTPS 的方式,將jce.jar與jsse.jar導入classpath,在使用https連線函式 2. 頁面停留過久 ANS: 就像打開IE一樣,會叫你點選接受憑證,這時用程式跑就自動停住了,居然不會timeout … Read More
  • Linux下打包壓縮war、解壓war包和jar命令把project_a文件夾下的文件打包成project.war 1. 打包  jar -xvf project.war /project_a -c   創建war包 -v   顯示過程信息 -f   指定 JAR 檔案名,通常這個參數是必須的 -M  不產生所有項的清單(MANIFEST〕檔,此參數會忽略 -m 參數 -0   這個是阿拉伯數字,只打包不壓縮的意思 2. 特定檔案… Read More
  • Big5部分中文顯示?處理最近在抓股票資料,但是因為有些上市櫃公司中文字,在預設Big5編碼中不支援,文字抓出來後會顯示?號,因此需要指定特定的編碼方式,才能正確的寫入資料庫中,目前Java的的解決方式如下: File sotckFile = new File(fileName); InputStreamReader isr = null; BufferedReader br = null; try { isr = new InputStreamReader(… Read More

0 意見: