import java.net.*;
import java.io.*;
import javax.net.ssl.*;

// Creazione di una socket SSL per connettersi a un server sicuro via HTTPS


public class SSLClient {
    
 public static void main(String[] args) throws Exception {

	java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

	try {
	    SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault();

	    SSLSocket socket = (SSLSocket)factory.createSocket("www.sun.com", 443);

			// La socket SSL negozia con la controparte
			// Ora si puo' usare la socket normalmente

	    PrintWriter out = new PrintWriter(
				  new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));

			// HTTPS = HTTP + SSL --> SSL c' gi, invio richiesta HTTP standard
	    out.println("GET http://www.sun.com/index.html HTTP/1.1");
	    out.println();
	    out.flush();						       

	    // read response
	    BufferedReader in = new BufferedReader(
				    new InputStreamReader(socket.getInputStream()));

	    String inputLine;

	    while ((inputLine = in.readLine()) != null)
				System.out.println(inputLine);

	    in.close();
	} catch (Exception e) {
	    e.printStackTrace();
	}
 }
}
