SpringBoot项目使用hutool工具进行HttpClient接口调用的处理(文件上传)

简介: 笔记

前言


今天遇到一个需求,需要调用其他系统的接口,看到网上都说hutool封装的HttpClient很好用,我就也去使用了下


下面记录使用过程和关键代码以及遇到的一些坑,下面分享给大家


简单描述我的需求:封装一个公共接口,调用其他系统的接口做文件上传


编写代码


注意:

以下代码中用到点JSONObject都是fastjson下的,不是hutool


完整路径为:import com.alibaba.fastjson.JSONObject


1 引入hutool的依赖

  <!-- hutool 工具包 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.7</version>
        </dependency>
  <!-- fastjson工具包 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.23</version>
        </dependency>

2 编写controller代码

 @ApiOperation(value = "公共文件上传")
    @PostMapping(value = "/commons/fileUpload")
    public JSONObject fileUpload(MultipartFile file) throws Exception {
       return  webPostAccountingService.fileUpload(file);
    }

3 编写service代码

这里的代码是核心,整个url请求,以及参数都这这里处理的,代码如下

 /**
     * @Author 魏一鹤
     * @Description  调用httpClient请求接口
     * @Date 14:44 2022/11/14
    **/
    private JSONObject fileUpload(MultipartFile multipartFile) throws Exception {
        HashMap<String, Object> paramMaps = new HashMap<>(4);
        paramMaps.put("xxx", );
        // 将MultipartFile转换为File
        paramMaps.put("file", this.multipartFileToFile(multipartFile));
        HttpResponse response = HttpRequest.post("xxx")
                .header("xxx", xx)
                .form(paramMaps)
                .execute();
        int status = response.getStatus();
        System.out.println("请求响应状态码:" + status);
        String body = response.body();
        System.out.println(body);
        JSONObject jsonObject = JSONObject.parseObject(body);
        Object msg = jsonObject.get("msg");
        System.out.println(msg);
        Object code = jsonObject.get("code");
        System.out.println(code);
        return jsonObject;
    }
在这里插入代码片

4 将MultipartFile转换为File方法

上面用到了multipartFileToFile方法,因为Hutool封装源码里面是对File进行特殊处理的

20.png

所以需要将MultipartFile转换为File,方法如下

 /**
     * @Author 魏一鹤
     * @Description 将MultipartFile转换为File
     * @param multiFile
     * @return
     */
    private  File multipartFileToFile(MultipartFile multiFile) {
        // 获取文件名
        String fileName = multiFile.getOriginalFilename();
        // 获取文件后缀
        String prefix = fileName.substring(fileName.lastIndexOf("."));
        // 若须要防止生成的临时文件重复,能够在文件名后添加随机码
        try {
            File file = File.createTempFile(fileName, prefix);
            multiFile.transferTo(file);
            return file;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

5 测试

基本代码写完之后,就可以测试了,这里通过我的接口访问内网接口,是一样的效果

21.png

总结


我个人也是第一次使用hutool工具进行HttpClient接口调用的处理

个人感觉还是不错的,使用起来很简单,只是把请求的url,请求的方式,参数进行配置,即可完成并收到返回值

如果哪里不对,欢迎大家指出来,感谢大家的观看,希望对您有用!

相关文章
|
7月前
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
614 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
6月前
|
前端开发 安全 Java
Spring Boot 便利店销售系统项目分包设计解析
本文深入解析了基于Spring Boot的便利店销售系统分包设计,通过清晰的分层架构(表现层、业务逻辑层、数据访问层等)和模块化设计,提升了代码的可维护性、复用性和扩展性。具体分包结构包括`controller`、`service`、`repository`、`entity`、`dto`、`config`和`util`等模块,职责分明,便于团队协作与功能迭代。该设计为复杂企业级应用开发提供了实践参考。
251 0
|
7月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
114 0
|
7月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
869 0
|
3月前
|
JSON 分布式计算 大数据
springboot项目集成大数据第三方dolphinscheduler调度器
springboot项目集成大数据第三方dolphinscheduler调度器
213 3
|
3月前
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
320 3
|
3月前
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
413 2
|
3月前
|
分布式计算 Java 大数据
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
221 2
|
3月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
179 0
|
3月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
331 0

热门文章

最新文章