import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;

import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;

import sun.security.ssl.SSLSocketImpl;

public class JI9028765 {

	public static void main(String[] args) throws Exception {
 
        final String socksProxyHost = "localhost";
        final int socksProxyPort = 8888;
        System.out.println(socksProxyPort);
        		
		final String hostname = "www.google.com"; 
		final int port = 443; 

		final Socket socket = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(socksProxyHost, socksProxyPort)));
		socket.connect(new InetSocketAddress(hostname, port)); 
		final Socket sslSocket = ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(socket, socksProxyHost, socksProxyPort, true); 
		try { 
			sslSocket.setSoTimeout(3000); 
			final SSLSocketImpl impl = (SSLSocketImpl) sslSocket; 

			impl.setHost(hostname); 

			String getRequest = "GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n\r\n"; 
			sslSocket.getOutputStream().write(getRequest.getBytes()); 
			sslSocket.getOutputStream().flush(); 


			final StringBuilder buf = new StringBuilder(); 
			int read = sslSocket.getInputStream().read(); 
			try { 
				while (read >= 0) { 
					buf.append((char)read); 
					read = sslSocket.getInputStream().read(); 
				} 
			} catch (SocketTimeoutException e) { 
				
			} 

			 System.out.println(buf.toString()); 
		} finally { 
			sslSocket.close(); 
		} 

	}

}
