- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.net.Socket;
- import java.security.cert.CertificateException;
- import java.security.cert.X509Certificate;
- 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 = "www.google.com";
- // 受访的页面
- 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());
- }
- }
- /**
- * 自定义的认证管理类。
- *
- * @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;
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/090420132767.html
来源: http://www.codesnippet.cn/detail/090420132767.html