package org.abin.lee;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
/**
* 自定義的認證管理類。
*
* @author JAVA世紀網(java2000.net)
*
*/
class Java2000TrustManager implements X509TrustManager {
Java2000TrustManager() {
// 這里可以進行證書的初始化操作
}
// 檢查客戶端的可信任狀態
public void checkClientTrusted(X509Certificate chain[], String authType) throws CertificateException {
System.out.println("檢查客戶端的可信任狀態...");
}
// 檢查服務器的可信任狀態
public void checkServerTrusted(X509Certificate chain[], String authType) throws CertificateException {
System.out.println("檢查服務器的可信任狀態");
}
// 返回接受的發行商數組
public X509Certificate[] getAcceptedIssuers() {
System.out.println("獲取接受的發行商數組...");
return null;
}
}
package org.abin.lee;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* JAVA操作SSL協議,通過Socket訪問Https的程序代碼例子。
*
* @author JAVA世紀網(java2000.net)
*
*/
public class ReadHttpsURL {
// 默認的HTTPS 端口
static final int HTTPS_PORT = 443;
public static void main(String argv[]) throws Exception {
// 受訪主機
String host = " // 受訪的頁面
String url = "/adsense/?sourceid=aso&subid=ZH_CN-ET-AS-ADSBY6&medium=link&hl=zh_CN";
// 自定義的管理器
X509TrustManager xtm = new Java2000TrustManager();
TrustManager mytm[] = { xtm };
// 得到上下文
SSLContext ctx = SSLContext.getInstance("SSL");
// 初始化
ctx.init(null, mytm, null);
// 獲得工廠
SSLSocketFactory factory = ctx.getSocketFactory();
// 從工廠獲得Socket連接
Socket socket = factory.createSocket(host, HTTPS_PORT);
// 剩下的就和普通的Socket操作一樣了
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
out.write("GET " + url + " HTTP/1.0\n\n");
out.flush();
System.out.println("start work!");
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line + "\n");
}
out.close();
in.close();
System.out.println(sb.toString());
}
}
http://ming-fanglin.iteye.com/blog/574596