| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
admin
10年前发布

用SSLSocketFactory 连接https的地址

package com.wtf.demo.socket;     import javax.net.ssl.SSLSocket;  import javax.net.ssl.SSLSocketFactory;  import java.io.*;     /**   * Created by wtf on 2015/12/28.   */  public class HTTPSClient {         public static void main(String[] args) {          int port = 443;          String host = "sp0.baidu.com";             SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();          SSLSocket socket  = null;          try {              socket = (SSLSocket)factory.createSocket(host,port);                 //启用密码组              String[] supportedCipherSuites = socket.getSupportedCipherSuites();              socket.setEnabledCipherSuites(supportedCipherSuites);                 Writer out = new OutputStreamWriter(socket.getOutputStream(),"UTF-8");                 //https在get中需要完全的URL              out.write("GET https://" + host + "/ HTTP/1.1\r\n");              out.write("Host:" + host + "\r\n");              out.write("\r\n");              out.flush();                    //读取相应                 BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));                 //读取首部              String s;              while(!(s=reader.readLine()).equals("")){                  System.out.println(s);              }              System.out.println();                 //读取长度              String contentLength = reader.readLine();              int length = Integer.MAX_VALUE;              try{                  length = Integer.parseInt(contentLength.trim(),16);              }catch (NumberFormatException e){                 // e.printStackTrace();                  //这个服务器在响应题的第一行没有发送content-length              }                 int c ;              int i =0 ;                 while ((c= reader.read())!=-1 && i++ <length){                  System.out.write(c);              }                 System.out.println();             } catch (IOException e) {              e.printStackTrace();          }finally {              try{                  if(socket!=null){                    socket.close();                  }              }catch (Exception e){                  e.printStackTrace();              }          }      }     }