HTTPS请求

ゝ一纸荒年。 2021-09-30 02:42 436阅读 0赞

  hhtps:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。一般用于解决信任主机、通讯过程中的数据的泄密和被篡改等问题。

  http:全称是Hypertext Transfer Protocol Vertion (超文本传输协议),说通俗点就是用网络链接传输文本信息的协议,

  所以http和https之间的区别就在于其传输的内容是否加密和是否是开发性的内容。

  HTTPS和HTTP的区别:

  1. https协议需要到ca申请证书,一般免费证书很少,需要交费。
  2. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  3. httphttps使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443
  4. http的连接很简单,是无状态的。
  5. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

  相关详细信息参考:https://blog.csdn.net/zmx729618/article/details/51372659

XmlManager.java

  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.DataOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileWriter;
  7. import java.io.FilenameFilter;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. import java.io.InputStreamReader;
  11. import java.io.PrintWriter;
  12. import java.net.URL;
  13. import java.util.ArrayList;
  14. import java.util.Date;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. import javax.net.ssl.HostnameVerifier;
  19. import javax.net.ssl.SSLContext;
  20. import javax.net.ssl.SSLSession;
  21. import javax.net.ssl.SSLSocketFactory;
  22. import javax.net.ssl.TrustManager;
  23. import javax.net.ssl.HttpsURLConnection;
  24. import net.sf.json.JSONObject;
  25. public class XmlManager {
  26. public static String httpurlconnection(Map map,String httpurls){
  27. try {
  28. //创建SSLContext
  29. SSLContext sslContext=SSLContext.getInstance("SSL");
  30. TrustManager[] tm={new MyX509TrustManager()};
  31. //初始化
  32.      sslContext.init(null, tm, new java.security.SecureRandom());
  33. //获取SSLSocketFactory对象
  34. SSLSocketFactory ssf=sslContext.getSocketFactory();
  35. URL url=new URL(httpurls);
  36. HttpsURLConnection conn=(HttpsURLConnection) url.openConnection();
  37. //设置是否进行主机名确认(类中类)
  38. conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
  39. //设置当前实例使用的SSLSocketFactory conn.setSSLSocketFactory(ssf);
  40. conn.setRequestMethod("POST");//连接方式为post
  41. conn.setDoOutput(true);//设置是否向urlConn输出,因为是post请求,参数要放在http正文内,因此需要设置为true,默认情况下为false
  42. conn.setDoInput(true);//设置是否从urlConn读入,默认情况下为true
  43.           conn.setRequestProperty("Content-Type","application/json;charset=UTF-8");//设置参数格式
  44. conn.setUseCaches(false);
  45. conn.connect();
  46. //往服务器写内容
  47. if(null!=map){
  48. DataOutputStream os=new DataOutputStream(conn.getOutputStream());
  49. JSONObject json=JSONObject.fromObject(map);
  50. os.writeBytes(json.toString());
  51. System.err.println("json.toString()"+json.toString());
  52. os.flush();
  53. os.close();
  54. }
  55. //读取服务器端返回的内容
  56. InputStream is=conn.getInputStream();
  57. InputStreamReader isr=new InputStreamReader(is, "utf-8");
  58. BufferedReader br=new BufferedReader(isr);
  59. String json=br.readLine();
  60. return json;
  61. } catch (Exception e) {
  62. System.err.println(e.getMessage());
  63. // TODO: handle exception
  64. return null;
  65. }
  66. }
  67. //类中类 作用:是否进行主机名确认。True 通过,false不通过
  68. public static class TrustAnyHostnameVerifier implements HostnameVerifier{
  69. public boolean verify(String arg0, SSLSession arg1) {
  70. // TODO Auto-generated method stub
  71.               //设置为true,相当于不进行主机确认,具有一定的不安全性
  72. return true;
  73. }
  74. }
  75. }

  MyX509TrustManager.java

  1. import java.security.cert.CertificateException;
  2. import java.security.cert.X509Certificate;
  3. import javax.net.ssl.X509TrustManager;
  4. public class MyX509TrustManager implements X509TrustManager{
  5. public void checkClientTrusted(X509Certificate[] arg0, String arg1)
  6. throws CertificateException {
  7. // TODO Auto-generated method stub
  8. }
  9. public void checkServerTrusted(X509Certificate[] arg0, String arg1)
  10. throws CertificateException {
  11. // TODO Auto-generated method stub
  12. }
  13. public X509Certificate[] getAcceptedIssuers() {
  14. // TODO Auto-generated method stub
  15. return null;
  16. }
  17. }

  

转载于:https://www.cnblogs.com/ttqi/p/10437240.html

发表评论

表情:
评论列表 (有 0 条评论,436人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HTTP请求

    http请求分为请求头和请求体,请求头的第一行又为请求行,下面分别进行介绍。 请求头 话不多说,我们直接以一个请求头为例子来介绍,我们随便抓取一个包进行演示,下列是我抓

    相关 http请求

    http 1、是客服端与服务器传输文本的一种协议 2、http协议是无状态的 3、http协议默认端口是80 4、http协议(加密传输)端口是443