title: Android/Java -- How to Create HTTPS Connection?
body: <p>I have code here that allows me to connect to https servers and transfer data. It works just fine, but I want to know if I'm doing it the right way and I'm actually making a secure connection. Please check my work. Thanks.</p>
  
  <pre><code>public class HTTPSClient extends DefaultHttpClient
  {
  
      public HTTPSClient() 
      {
      }
  
      @Override
      protected ClientConnectionManager createClientConnectionManager()
      {
          SchemeRegistry registry = new SchemeRegistry();
  
          HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
          final SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
          socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
          //socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
  
          registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
          registry.register(new Scheme("https", socketFactory, 80));
          registry.register(new Scheme("https", socketFactory, 443));
          HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
  
          HttpParams params = new BasicHttpParams();
          HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
          HttpProtocolParams.setContentCharset(params, "UTF-8");
  
          return new SingleClientConnManager(params, registry);
      }
  }
  </code></pre>
  
  <p>I use this code like so:</p>
  
  <pre><code>HttpResponse response = mConnection.httpsClient.execute(new HttpHost("www.somehostname.com", 80), new HttpGet("https://someaddress")));
  </code></pre>
  
  <p>I then read the response from there.
  Thanks again.</p>