【高效开发工具系列】Hutool Http工具类

这篇具有很好参考价值的文章主要介绍了【高效开发工具系列】Hutool Http工具类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
【高效开发工具系列】Hutool Http工具类,s0 常用工具,http,网络协议,网络

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

一.基本介绍

1.hutool http 优点

  1. 简化了 HTTP 请求的操作,提供了丰富的 API 和工具类,方便处理 HTTP 请求和响应。
  2. 支持多种常见的 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。
  3. 支持设置请求头、请求参数、请求体等。
  4. 提供了便捷的方法来处理 HTTP 响应,包括获取响应状态码、响应头、响应体等。
  5. 支持文件上传和下载功能,可以方便地进行文件的上传和下载操作。
  6. 提供了 Cookie 的操作方法,可以方便地处理 Cookie 相关的操作。
  7. 支持 HTTP 代理和 SSL/TLS 的配置。
  8. 集成了连接池,可以提高 HTTP 请求的性能和效率。
  9. 提供了异常处理机制,方便处理 HTTP 请求过程中出现的异常情况。
  10. 支持自定义拦截器,可以对 HTTP 请求进行拦截和处理。

hutool 的 HTTP 模块提供了简单、方便、灵活的方式来处理 HTTP 请求和响应,使得开发者可以更加轻松地进行网络通信相关的操作。

2.注意事项

hutool http 库的注意事项:

  1. 需要添加 hutool-http 依赖:在使用 hutool http 库之前,需要在项目的依赖中添加 hutool-http 的依赖项。
  2. 注意异常处理:在发送 HTTP 请求时,可能会出现网络连接异常、超时等问题,需要适当处理这些异常,以确保程序的稳定性。
  3. 注意请求参数的编码:在发送 POST 请求时,如果包含中文或特殊字符,需要正确设置请求参数的编码,以避免乱码或解析错误。
  4. 注意使用合适的 HTTP 方法:根据实际需求选择合适的 HTTP 方法,例如 GET 用于获取资源、POST 用于创建资源、PUT 用于更新资源、DELETE 用于删除资源等。
  5. 注意请求头的设置:根据需要设置合适的请求头,包括 Content-Type、User-Agent、Authorization 等。
  6. 注意请求体的设置:对于 POST 或 PUT 请求,需要根据接口要求设置请求体的内容和格式。
  7. 注意数据安全:在发送 HTTP 请求时,特别是涉及用户敏感信息的场景,需要注意数据的加密和安全性。

3.基本使用步骤

以下是使用 Hutool 进行 HTTP 请求的基本步骤:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-http</artifactId>
    <version>5.7.10</version>
</dependency>
  1. 添加 Hutool 依赖:在项目的构建文件中添加 Hutool 的依赖,例如在 Maven 项目中,在 pom.xml 文件中添加以下依赖:
  2. 创建 HttpUtil 对象:通过HttpUtil.createRequest(url)方法创建一个 HttpUtil 对象,其中url是要请求的 URL 地址。
  3. 设置请求参数:通过setXXX方法设置请求的参数,例如设置请求头、请求方法、请求体等。
  4. 发送请求:调用execute()方法发送请求。
  5. 处理响应:获取响应结果,可以通过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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

【高效开发工具系列】Hutool Http工具类,s0 常用工具,http,网络协议,网络文章来源地址https://www.toymoban.com/news/detail-753342.html

到了这里,关于【高效开发工具系列】Hutool Http工具类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【高效开发工具系列】云服务器+Nginx自定义图床

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年02月05日
    浏览(52)
  • 开发规范及常用工具

    entity : 是与数据库一一对应的字段 vo : 返回给前端的视图对象 dto : 前端传过来的参数封装成dto,用于返回给前端的对象,一般用于查询操作。 POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。 注意:数据库中拼接字段中间使用下划线(_)进行分割,而实体类中拼接字段采用的是驼峰映射

    2024年02月01日
    浏览(33)
  • 【高效开发工具系列】Windows 系统下将 Windows 键盘的 ctrl 和 alt 互换

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年03月10日
    浏览(40)
  • 后端开发常用工具及其官网

    ​JAVA 开发工具:     工具:Eclipse     官网:https://www.eclipse.org/     工具:JetBrains IntellIDEA     官网:https://www.jetbrains.com/idea/  JAVA 反编译查看工具:      工具:jd-gui     官网:http://java-decompiler.github.io/  jar包打开工具:       工具:7-zip      官网:7-Z

    2024年02月11日
    浏览(40)
  • 前端开发常用哪些工具软件?

    前端开发必备工具,一篇文章一网打尽 文章目录            一、前端提高“生产力”工具 1.WebStorm 2. 远程开发 - VSCode 3. 接口测试 - Postman 4.API在线文档生成和测试 - SwaggerUI 5.抓包工具 - Wireshark 6.通用数据库管理 - DBeaver 7.MD编辑器 - Typora 8.虚拟机 - VirtualBox 9.Git存储库托管 -

    2023年04月08日
    浏览(38)
  • JAVA开发常用测试工具

    什么是junit JUnit 是一个用于编写和运行单元测试的开源框架,是Java 开发中最常用的单元测试框架之一。它为 Java 开发者提供了一种简单、灵活且可扩展的方式来编写自动化测试代码,并帮助开发者进行单元测试的管理和执行。 JUnit 提供了一组注解和断言方法,使开发者能够

    2024年04月25日
    浏览(48)
  • 常用的几款敏捷开发工具

    1、Leangoo领歌 Leangoo领歌国内知名敏捷开发工具,它覆盖了敏捷项目研发全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scrum of Scrums大规模敏捷。其主要功能/解决问题的价值包括:1)能够支持多种场景,如:敏捷研发管理、敏捷项目管理、工作流管理、轻量级项目群管理、

    2024年02月05日
    浏览(41)
  • 嵌入式软件开发常用的编辑代码工具、比较工具和测试工具的使用说明和操作步骤

    嵌入式软件开发常用的编辑代码工具有: Eclipse Eclipse是一款开源的集成开发环境,支持多种编程语言和插件,适用于多种嵌入式开发平台。以下是Eclipse的使用说明和操作步骤: 步骤1:创建新工程 单击“File”菜单,选择“New”→“Project”选项,选择工程类型和开发平台。

    2024年02月02日
    浏览(92)
  • 项目开发常用配置-自用工具类

     

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包