在寫JSP使用Redirect的時候,如果是導向HTTPS頁面,也可能發生某些異常。
1. java.net.MalformedURLException: unknown protocol https
ANS: 使用的方法不是 HTTPS 的方式,將jce.jar與jsse.jar導入classpath,在使用https連線函式
2. 頁面停留過久
ANS: 就像打開IE一樣,會叫你點選接受憑證,這時用程式跑就自動停住了,居然不會timeout
1. java.net.MalformedURLException: unknown protocol https
ANS: 使用的方法不是 HTTPS 的方式,將jce.jar與jsse.jar導入classpath,在使用https連線函式
2. 頁面停留過久
ANS: 就像打開IE一樣,會叫你點選接受憑證,這時用程式跑就自動停住了,居然不會timeout
<%@ page import="java.net.URL"%>
<%@ page import="java.net.URLEncoder"%>
<%@ page import="java.net.URLConnection"%>
<%@ page import="javax.net.ssl.HttpsURLConnection"%>
<%@ page import="javax.net.ssl.HostnameVerifier"%>
<%@ page import="javax.net.ssl.HttpsURLConnection"%>
<%@ page import="javax.net.ssl.SSLContext"%>
<%@ page import="javax.net.ssl.SSLSession"%>
<%@ page import="javax.net.ssl.TrustManager"%>
<%@ page import="javax.net.ssl.X509TrustManager"%>
<%@ page import="javax.security.cert.X509Certificate"%>
<%@ page import="javax.security.cert.CertificateException"%>
<%@ page import="java.security.SecureRandom"%>
/***
* more code
* skip
*/
/***********憑證擷取開始**************/
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs,String authType) {
}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs,String authType) {
}
} };
HostnameVerifier dummyHostnameVerifier = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(dummyHostnameVerifier);
/***********憑證擷取結束**************/
/***********擷取HTTPS頁面開始**************/
String httpsURL = "<https網址>"
try{
url = new URL(httpsURL);
Httpshurlconnection hurlc = (Httpshurlconnection) url.openConnection();
hurlc.setRequestMethod("POST");
InputStream inputStream = hurlc.getInputStream();
LineNumberReader reader = new LineNumberReader(new InputStreamReader(inputStream));
while (true) {
tmp = reader.readLine();
if (tmp == null)
break;
out.print(tmp);
}
} catch (Exception e) {
e.printStack();
}
/***********憑證擷取結束**************/
/***
* more code
* skip
*/











