java发送请求-http和https

news/2024/9/24 17:13:46/

httphttps区别

1、http是网络传输超文本协议,client---- http------ server

2、https=http+ssl证书,让网络传输更安全 ,client---- http+ssl------ server

3、ssl证书是需要客户端认可的,注意官方证书和jdk生成的证书的用户来使用区别


第一步信任所有证书+创建ssl网络连接对象

引入建立连接的源码类

https://img-blog.csdnimg.cn/direct/240cf057ba864889b0cc237c070e233a.png" width="1200" />

有3个构造方法使用

https://img-blog.csdnimg.cn/direct/484527e1a13d44afb44c355d7ee23913.png" width="1064" />

查看源码作用-建立网络链接ssl

client---- http+ssl------ server

这个源码有4个参数,传入这4个参数,就能创建ssl网络连接对象

https://img-blog.csdnimg.cn/direct/7fe43c4f086640088e5cdb7e46d53021.png" width="1200" />


看构造-没有好用的方法

引入新的类builder为生成器,可以生成sslcontext

https://img-blog.csdnimg.cn/direct/13e1915e72b74110b43be20def11f6ee.png" width="724" />

因为.build方法的返回值就是sslcontext,所以我们调用build函数

得到第一个参数sslcontext,需要在这个参数里传入信任证书的代码

https://img-blog.csdnimg.cn/direct/06eb532a8be94e8f9ac9fbaeec09a9cb.png" width="1012" /> 需要有关联性

继续分析sslcontextbuilder类,这里其他的构造方法获取密钥等不能使用,可用的是loadTrustMaterial(信任证书材料)

https://img-blog.csdnimg.cn/direct/f034e5e1f5f44b3bbaa79a2474020a71.png" width="932" />

这个方法是一个接口,是信任证书的过程 

https://img-blog.csdnimg.cn/direct/15d31c6843fe41ca9a37533e58596ed6.png" width="1070" />

入参是接口类,所以需要找子类 

https://img-blog.csdnimg.cn/direct/7107f945e93a4d328c8c2e34a6903e26.png" width="1200" /> 找子类,其中可使用方法是第2个https://img-blog.csdnimg.cn/direct/73b13d6c8c704455b39d6b4ada7ac4a2.png" width="1200" />

看看这个类是做什么的

我接受你所有的证书,因为我是认可你的https://img-blog.csdnimg.cn/direct/6ad468e57eff4f2fbaeef0d59a8c68b3.png" width="1200" />

最终代码

https://img-blog.csdnimg.cn/direct/d999461173d244578d43d85eeee49388.png" width="968" />优化

信任所有的证书

https://img-blog.csdnimg.cn/direct/6aa012b3edf94e69a9dd414c82e10c29.png" width="1044" />


第2个参数

抽象类不能直接使用,但我们需要这个域名的参数

https://img-blog.csdnimg.cn/direct/799eb09a211e49bb84ff192144935e37.png" width="1200" /> 新的方法找域名,网站地址,

https://img-blog.csdnimg.cn/direct/e3ca87abf0fd48ab924fc0c3534ab614.png" width="1162" />

把域名代码写出 

https://img-blog.csdnimg.cn/direct/3ff6e816da3b487099b0ec126ba46e04.png" width="1148" />


new sslconnectionsocketfactory看里面的参数

https://img-blog.csdnimg.cn/direct/484527e1a13d44afb44c355d7ee23913.png" width="1064" />

https://img-blog.csdnimg.cn/direct/4eaeb72b605e4ebbb83184d7ff752aac.png" width="1200" /> 支持协议,密码

协议支持的协议版本,密码没人会给,也拿不到就为null

调整顺序后

https://img-blog.csdnimg.cn/direct/ffbf3d813ff54d1bb53e1a31f733d389.png" width="1200" />

补充返回值 https://img-blog.csdnimg.cn/direct/7662a392921548968140f991220acef7.png" width="1200" />

优化代码 

https://img-blog.csdnimg.cn/direct/fd8a308677c6475c83036c0e74d63504.png" width="1200" />

最终的笔记 

https://img-blog.csdnimg.cn/direct/2c020cb0d46f42058b9c8103cecce63b.png" width="1200" />



http://www.ppmy.cn/news/1449046.html

相关文章

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.5, 汇编 led.s,第一次点亮LED灯

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

SpringMVC进阶(数据格式化以及数据校验)

文章目录 1.数据格式化1.基本介绍1.基本说明2.环境搭建 2.基本数据类型和字符串转换1.需求分析2.环境搭建1.data_valid.jsp首页面2.Monster.java封装请求信息3.MonsterHandler.java处理请求信息4.monster_addUI.jsp添加妖怪界面5.单元测试 3.保存妖怪信息1.MonsterHandler.java…

Working with Design Patterns in Go (Golang)

introduction: 1、go及GoLand的下载安装: 安装包下载地址为:https://golang.org/dl/ 推荐使用国内地址:Go下载 - Go语言中文网 - Golang中文社区 2、Docker Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜…

WPF之自定义绘图

1,创建自定义控件类 class CustomDrawnElement:FrameworkElement{public static readonly DependencyProperty BackgroundColorProperty;static CustomDrawnElement(){FrameworkPropertyMetadata meta new FrameworkPropertyMetadata(Colors.SkyBlue);meta.Affects…

字典及GitHub字典爬取工具

红队API接口Fuzz字典可以用于WEB安全,渗透测试,SRC等场景 完整文件已上传知识星球,需要的朋友可加入查看。

Runtime.getruntime.exec注意事项

Runtime.getruntime.exec注意事项 1.普通使用--简单命令2.指定文件下执行命令注意事情(有过滤脚本)注意事项2 1.普通使用–简单命令 Runtime.getruntime.exec(command); // 可以是命令本身(ls)或者是脚本(/usr/local/test.sh)String command "ls&…

MyBatis:mybatis入门

MyBatis 持久层框架,用于简化JDBC开发,是对原始JDBC程序的封装 持久层 数据访问层(dao),用来操作数据库 框架 一个半成品软件,一套可重用的通用软件代码模型. JDBC (Java DataBase Connectivity) 使用java语言操作关系型数据库的一套API 本质是sun公司官方定义的一套操…

Hive 表定义主键约束

文章目录 1.建表语句2.主键约束3.主键约束的意义参考文献 1.建表语句 先看一下官方给的完整的见表语句: CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later)[(col_name data…