HTTP与HTTPS的区别以及代码实现请求

先简单说一下  http与https的定义

-----------------------------------------------

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

  HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

另外 关于两者的联系可以简单这样理解:

-------------------------------------------

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

  为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

说白了    HTTPS=HTTP+SSL(广义上可以这样理解)

本片文章的重点 说构建请求 

HTTPSXMLPOST 请求

贴源码:

public static String sendRequestXmlPost(String reqUrl,Map<String,String> map) throws Exception {
    String res= null;
    HttpURLConnection connection = SSLTrustManager.connect(reqUrl);
    connection.setRequestProperty("Content-Type", "text/xml");
    connection.setDoOutput(true);
    connection.setDoInput(true);
    connection.setRequestMethod("POST");
    connection.setUseCaches(false);
    connection.setReadTimeout(30000);
    byte data[] = XmlUtil.mapToXml(map).getBytes("utf-8");
    OutputStream out = connection.getOutputStream();
    out.write(data);
    StringBuffer receivedData = new StringBuffer();
    InputStreamReader inReader = new InputStreamReader(connection.getInputStream(), "UTF-8");
    BufferedReader aReader = new BufferedReader(inReader);
    String aLine;
    while ((aLine = aReader.readLine()) != null) {
        receivedData.append(aLine);
    }
    res = receivedData.toString();
    aReader.close();
    connection.disconnect();
    return res;
}

请求方式 是XML格式的参数集合 ,mapTOXML 其实是一个工具类,这里就不做解释

HttpURLConnection connection = SSLTrustManager.connect(reqUrl);

与http有区别的就是这一句话   起作用

可以理解为  这是初始化 SSL环境(安全点)

其方法体:

  //封装
public static HttpURLConnection connect(String strUrl) throws Exception {
         
         javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
         javax.net.ssl.TrustManager tm = new SSLTrustManager();
         trustAllCerts[0] = tm;
         javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
         sc.init(null, trustAllCerts, null);
         HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
          
         HttpsURLConnection.setDefaultHostnameVerifier((HostnameVerifier) tm);
          
        URL url = new URL(strUrl);
        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
      
        return urlConn;
    }

猜你喜欢

转载自blog.csdn.net/aa19891204/article/details/81780159