程序代码
//////////////////////////////////////////////////////////////////////////////////////////import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.SSLSocket;import com.sun.net.ssl.SSLContext;
import com.sun.net.ssl.TrustManager;
import com.sun.net.ssl.X509TrustManager;import java.net.URL;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Properties;
import java.io.IOException;
import java.io.*;
import java.net.MalformedURLException;
import javax.net.ssl.HandshakeCompletedEvent;
import javax.net.ssl.HandshakeCompletedListener;
public class SSLTest { public static void main(String args[])
{

X509TrustManager   xtm   =   new   MyTrustManager();   
TrustManager   mytm[]   =   {xtm};   

SSLSocketFactory   factory =null;
try{
SSLContext   ctx   =   SSLContext.getInstance("SSL");   
ctx.init(null,mytm,null);   

factory   =   ctx.getSocketFactory();  

}catch(KeyManagementException e2)
{
e2.printStackTrace();
}catch(NoSuchAlgorithmException e3)
{
e3.printStackTrace();
}


String url="https://www.sun.com";
String proxy="172.25.75.2";
int port=8080;
URL server=null;

try{
socket =(SSLSocket)factory.createSocket(proxy, port);
 System.out.println("Conntion succeed!");
}catch(UnknownHostException e1)
{
System.out.println("Conntion fail 1!");
e1.printStackTrace();
}catch(IOException e2)
{
System.out.println("Conntion fail 2!");
e2.printStackTrace();
}

try{
server=new URL(url);
}catch(MalformedURLException e)
{
e.printStackTrace();
} 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 3!");
e.printStackTrace();
}


}

}class   MyTrustManager   implements   X509TrustManager   
{   
      MyTrustManager()   
      {   //   constructor   
            //   create/load   keystore   
      }   
  
      public   void   checkClientTrusted(X509Certificate   chain[],   String   authType)   throws   CertificateException   
      {   
            System.out.println("1");   
      }   
  
      public   void   checkServerTrusted(X509Certificate   chain[],   String   authType)   throws   CertificateException     
      {   
                 System.out.println("2");               
    //   special   handling   such   as   poping   dialog   boxes   
      }     
      public   X509Certificate[]   getAcceptedIssuers()   
      {   
             System.out.println("3");   
             return   null;   
      }   
      
      public boolean isClientTrusted(X509Certificate   chain[])
      {
       return true;
      }
      
      public boolean isServerTrusted(X509Certificate   chain[])
      {
       return true;
      }
      
}
异常
///////////////////////////////////////////////////////////////////////////////
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
Conntion fail 3!
javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
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 SSLTest.main(SSLTest.java:118)
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 SSLTest.main(SSLTest.java:108)是什么原因? socket进行连接没有问题为什么用sslscoket会出现这样的错误?