从源码研究实现Java发送get和post请求

本文深入探讨了Java中实现GET和POST请求的原理,包括HTTP和HTTPS的基础知识,以及如何使用Java HTTPClient发送请求。通过源码分析,详细介绍了GET和POST请求的设置过程,如设置超时、请求头、参数处理,并提供了简单的封装示例。
摘要由CSDN通过智能技术生成

一、get和post的一些基础知识

get请求:

  1. 原理:get请求本质上是去数据库里面查资源;

  2. 表现形式:请求数据会依附在url只有,以?分割,参数与参数之间以&符号相连,请求参数最多只能是1024个字节;

  3. 提交形式:请求和header一起发出;

  4. 安全性:安全性低,参数明文传输。

post请求:

  1. 原理:post请求本质是向数据库提交数据,增删改操作;

  2. 表现形式:提交的数据放在http的body体内,http协议对post请求的参数大小没有限制,但是不排除各大浏览器自己会做限制;

  3. 提交形式:请求header先发出,收到服务器返回的response header后,body再发出;

  4. 安全性:相对get请求,post请求的请求参数放在body体内相对安全一些,涉及用户登录密码和金钱相关的数据要特别注意加密处理。

二、http协议和https协议

二者的区别:

  1. http协议:超文本传输协议,且信息是明文传输;若攻击者截取客户端和服务器之间的传输报文,就可以获取用户信息,不安全;
  2. https协议:是具有安全性的ssl加密传输协议,为客户端和服务器之间的通信加密,确保数据传输安全。
  3. http结构:http–tcp–ip;https结构:http–ssl–tcp–ip;
  4. http协议连接简单,是无状态的;https是有ssl+http协议构建的加密传输、身份认证的网络协议;
  5. http协议的端口是80;https协议的端口是443;
  6. 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对象,数组的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值