一、get和post的一些基础知识
get请求:
-
原理:get请求本质上是去数据库里面查资源;
-
表现形式:请求数据会依附在url只有,以?分割,参数与参数之间以&符号相连,请求参数最多只能是1024个字节;
-
提交形式:请求和header一起发出;
-
安全性:安全性低,参数明文传输。
post请求:
-
原理:post请求本质是向数据库提交数据,增删改操作;
-
表现形式:提交的数据放在http的body体内,http协议对post请求的参数大小没有限制,但是不排除各大浏览器自己会做限制;
-
提交形式:请求header先发出,收到服务器返回的response header后,body再发出;
-
安全性:相对get请求,post请求的请求参数放在body体内相对安全一些,涉及用户登录密码和金钱相关的数据要特别注意加密处理。
二、http协议和https协议
二者的区别:
- http协议:超文本传输协议,且信息是明文传输;若攻击者截取客户端和服务器之间的传输报文,就可以获取用户信息,不安全;
- https协议:是具有安全性的ssl加密传输协议,为客户端和服务器之间的通信加密,确保数据传输安全。
- http结构:http–tcp–ip;https结构:http–ssl–tcp–ip;
- http协议连接简单,是无状态的;https是有ssl+http协议构建的加密传输、身份认证的网络协议;
- http协议的端口是80;https协议的端口是443;
- http证书申请免费,https证书需要到ca申请,需要交费。
三、Java-HTTPclient官方网站
2.1 官网地址:
http://hc.apache.org/httpcomponents-client-4.5.x/quickstart.html
2.2 eclipse中maven工程在pom.xml中配置HTTPclient依赖
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
四、java发送get请求
- A. 定义一个HTTPClients类的对象client,用来执行发送请求操作。类似于是一个浏览器的driver,client执行完发送请求的操作后,服务端返回的cookie(和session)信息会存储在client中;
- A.1 取cookie过程需要在定义client时调用另一个类方法,即方法:HttpClients.custom()方法,它的返回值类型是HttpClientBuilder,最后通过研究这个源码类使用以下两行代码得到CookieStore对象存储服务器返回的session值,这个值存放在cookie中;
CookieStore cookieStore = new BasicCookieStore();
client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
如果想要输出cookie信息,则需要注意两点:
1、输出cookie信息的操作要在执行请求后,即服务器返回结果后,在关闭response和client对象之前;
2、通过cookieStore.getCookies()方法得到的是一个List对象,数组的