Https 与http

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer)

HTTPS和HTTP的区别

 一、https协议需要到ca申请证书,一般免费证书很少,需要交费。  

 二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。   

    三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。   

    四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:

SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

android中 HTTPS 应用:

1、
KeyStore keyStore = ...;
   TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
   tmf.init(keyStore);

   SSLContext context = SSLContext.getInstance("TLS");
   context.init(null, tmf.getTrustManagers(), null);

   URL url = new URL("https://www.example.com/");
   HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
   urlConnection.setSSLSocketFactory(context.getSocketFactory());
   InputStream in = urlConnection.getInputStream();
 

2、
KeyStore keyStore = ...;
   KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
   kmf.init(keyStore);

   SSLContext context = SSLContext.getInstance("TLS");
   context.init(kmf.getKeyManagers(), null, null);

   URL url = new URL("https://www.example.com/");
   HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
   urlConnection.setSSLSocketFactory(context.getSocketFactory());
   InputStream in = urlConnection.getInputStream();
 

android中代理的使用:

主要有两个类 java.net.Proxy 与 android.net.Proxy,其中android.net.Proxy提供默认的代理主机和端口,java.net.proxy 封装 传递给 url.openConnection(Proxy)方法 建立链接。

    java.net.Proxy p = new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress(android.net.Proxy.getDefaultHost(), android.net.Proxy.getDefaultPort()));
                HttpURLConnection conn = (HttpURLConnection) url.openConnection(p);
原文地址:https://www.cnblogs.com/lipeil/p/2647156.html