用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(); 
            } 
        } 
    } 
  
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/10324.html

(0)
上一篇 2021年7月19日 10:10
下一篇 2021年7月19日 10:10

相关推荐

发表回复

登录后才能评论