💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
- 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
- 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
- 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
- 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
- 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
博客目录
- 一.基本介绍
- 1.hutool http 优点
- 2.注意事项
- 3.基本使用步骤
- 二.实战案例
- 1.get 请求
- 2.get 带参数
- 3.post 请求
一.基本介绍
1.hutool http 优点
- 简化了 HTTP 请求的操作,提供了丰富的 API 和工具类,方便处理 HTTP 请求和响应。
- 支持多种常见的 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。
- 支持设置请求头、请求参数、请求体等。
- 提供了便捷的方法来处理 HTTP 响应,包括获取响应状态码、响应头、响应体等。
- 支持文件上传和下载功能,可以方便地进行文件的上传和下载操作。
- 提供了 Cookie 的操作方法,可以方便地处理 Cookie 相关的操作。
- 支持 HTTP 代理和 SSL/TLS 的配置。
- 集成了连接池,可以提高 HTTP 请求的性能和效率。
- 提供了异常处理机制,方便处理 HTTP 请求过程中出现的异常情况。
- 支持自定义拦截器,可以对 HTTP 请求进行拦截和处理。
hutool 的 HTTP 模块提供了简单、方便、灵活的方式来处理 HTTP 请求和响应,使得开发者可以更加轻松地进行网络通信相关的操作。
2.注意事项
hutool http 库的注意事项:
- 需要添加 hutool-http 依赖:在使用 hutool http 库之前,需要在项目的依赖中添加 hutool-http 的依赖项。
- 注意异常处理:在发送 HTTP 请求时,可能会出现网络连接异常、超时等问题,需要适当处理这些异常,以确保程序的稳定性。
- 注意请求参数的编码:在发送 POST 请求时,如果包含中文或特殊字符,需要正确设置请求参数的编码,以避免乱码或解析错误。
- 注意使用合适的 HTTP 方法:根据实际需求选择合适的 HTTP 方法,例如 GET 用于获取资源、POST 用于创建资源、PUT 用于更新资源、DELETE 用于删除资源等。
- 注意请求头的设置:根据需要设置合适的请求头,包括 Content-Type、User-Agent、Authorization 等。
- 注意请求体的设置:对于 POST 或 PUT 请求,需要根据接口要求设置请求体的内容和格式。
- 注意数据安全:在发送 HTTP 请求时,特别是涉及用户敏感信息的场景,需要注意数据的加密和安全性。
3.基本使用步骤
以下是使用 Hutool 进行 HTTP 请求的基本步骤:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-http</artifactId>
<version>5.7.10</version>
</dependency>
- 添加 Hutool 依赖:在项目的构建文件中添加 Hutool 的依赖,例如在 Maven 项目中,在 pom.xml 文件中添加以下依赖:
- 创建 HttpUtil 对象:通过
HttpUtil.createRequest(url)
方法创建一个 HttpUtil 对象,其中url
是要请求的 URL 地址。 - 设置请求参数:通过
setXXX
方法设置请求的参数,例如设置请求头、请求方法、请求体等。 - 发送请求:调用
execute()
方法发送请求。 - 处理响应:获取响应结果,可以通过
getBody()
方法获取响应体内容,getStatus()
方法获取响应状态码等。
以下是一个简单的示例:
import cn.hutool.http.HttpUtil;
public class HttpDemo {
public static void main(String[] args) {
String url = "http://example.com/api";
HttpUtil.createGet(url)
.header("Authorization", "Bearer token")
.execute()
.body();
}
}
注意:在实际使用中,可能还需要处理异常、设置超时时间、传递参数等更多操作。以上仅为基本步骤的简单示例,具体使用可以根据实际需求进行调整。
二.实战案例
1.get 请求
@Value("${command-server.command-host-url}")
private String url;
@SneakyThrows
@Override
public List<TopSkuInfoDTO> getTopSkuInfo() {
List<TopSkuInfoDTO> topSkuInfoDTOS = new ArrayList<>();
String realUrl = url + "/open-api/v1/sku/replenish/getTopSkuInfo";
HttpResponse response = HttpRequest.get(realUrl)
.header("User-Agent", "Mozilla/5.0")
.header("Accept-Language", "en-US,en;q=0.5")
.timeout(5000)
.execute();
if (response.isOk()) {
String result = response.body();
// 创建ObjectMapper对象
ObjectMapper mapper = new ObjectMapper();
// 将JSON字符串转换成Payload对象
Payload payload = mapper.readValue(result, Payload.class);
topSkuInfoDTOS = (List<TopSkuInfoDTO>) payload.getPayload();
}
return topSkuInfoDTOS;
}
2.get 带参数
@SneakyThrows
@Override
public String getKeyByCode(String productCode) {
String realUrl = url + "/open-api/v1/sku/replenish/getKeyByCode?productCode=" + productCode;
HttpResponse response = HttpRequest.get(realUrl)
.header("User-Agent", "Mozilla/5.0")
.header("Accept-Language", "en-US,en;q=0.5")
.timeout(5000)
.execute();
if (response.isOk()) {
String result = response.body();
// 创建ObjectMapper对象
ObjectMapper mapper = new ObjectMapper();
// 将JSON字符串转换成Payload对象
Payload payload = mapper.readValue(result, Payload.class);
return (String) payload.getPayload();
}
return null;
}
3.post 请求
@SneakyThrows
@Override
public String getUrl(String productCode, String productKey) {
String realUrl = url + "/open-api/v1/cargoOffice/product/productDetails";
ProductDetailsQuery query = new ProductDetailsQuery();
query.setEmployeeCode("xxx");
query.setApplication("xxx");
query.setProductKey(productKey);
query.setProductCode(productCode);
query.setTimestamp(System.currentTimeMillis());
query.setBrandDetailNo("xxx");
query.setSecretId(this.secret);
String secret = query.getEmployeeCode() + "cargoOffice" + query.getTimestamp() + this.secret;
String secretStr = MD5Util.stringToMd5(secret);
query.setSecret(secretStr);
// 创建ObjectMapper对象
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(query);
HttpResponse response = HttpRequest.post(realUrl)
.header("Content-Type", "application/json")
.body(jsonStr)
.execute();
if (response.isOk()) {
String result = response.body();
// 将JSON字符串转换成Payload对象
Payload payload = mapper.readValue(result, Payload.class);
final Map map = (Map) payload.getPayload();
return (String) map.get("url");
}
return null;
}
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙