我想使用sslsocket通过代理访问https,但是出现有错误,我的代码如下
import java.net.MalformedURLException;
import java.net.URL;import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.net.UnknownHostException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class https
{
public static void main(String[] args)
{
 String url="https://www.sun.com";  String proxy="172.25.75.2";
 int port=8080;

 URL server=null;
//  SSLSocket socket=null;
 Socket socket=null;
//  socket= new SSLSocket();
 SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
 try{
       socket=(SSLSocket)factory.createSocket(proxy,port);
       System.out.println("Conntion succeed!");
    }catch(UnknownHostException e)
      {
     e.printStackTrace();
     System.out.println("Conntion fail 1!");
      }
    catch(IOException e1)
      {
     e1.printStackTrace();
     System.out.println("Conntion fail 2!");
      }

    try{
 server=new URL(url);
 }catch(MalformedURLException e)
 {
    e.printStackTrace();
    System.out.println("Conntion fail 3!");
 }
    
      String getRequest = "GET " + server.toExternalForm()+"/index.html"+ " HTTP/1.1";
      String hostSpecification = "Host: " + "www.sun.com";
      System.out.println(server.toExternalForm());
      System.out.println(server.getHost());
      System.out.println(getRequest);
      System.out.println(hostSpecification);
 
      
      try { PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()))); out.println(getRequest);
out.println(hostSpecification);
out.println();
out.flush(); if (out.checkError())
System.out.println("SSLSocketClient:  java.io.PrintWriter error");//  read response BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine); } in.close();
out.close();
socket.close(); } catch (Exception e) {
System.out.println("Conntion fail 4!");
e.printStackTrace();
}
 
}
}
///////////////////////////////////////////////////////
异常如下
Conntion succeed!
https://www.sun.com
www.sun.com
GET https://www.sun.com/index.html HTTP/1.1
Host: www.sun.com
SSLSocketClient:  java.io.PrintWriter error
javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
Conntion fail 4!
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1154)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:65)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:411)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:453)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at https.main(https.java:77)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(InputRecord.java:501)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:343)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:720)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1025)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:619)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
at java.io.BufferedWriter.flush(BufferedWriter.java:236)
at java.io.PrintWriter.flush(PrintWriter.java:270)
at https.main(https.java:67)
///////////////////////////////////////////////////////////////////////
请教高手 是什么原因?在程序中应该怎样改?