当前位置: 首页 > article >正文

Java:获取HttpServletRequest请求参数

目录

    • 一、概况
    • 二、程序源码


一、概况

在实际的开发应用当中,我们有时需要开放一个公共的接口让第三方给我们推送数据,但是很多第三方厂家买的是别人的软件或者交接人员不是开发人员,没有程序源码,不知道推送的是什么格式的数据。
这就需要我们自己使用代码解析出来,在这里可以借用HttpServletRequest来解析字符串、JSON、XML以及文件数据等。

二、程序源码

@PostMapping("/push")
public AjaxResult push(HttpServletRequest request) {
    try {
        String contentType = request.getContentType();
        log.info(String.format("摄像头报警请求参数类型:%s", contentType));
        if (contentType.contains("multipart/form-data;")) {
            readFile(request);
        } else {
            readParams(request);
        }
        return success();
    } catch (Exception e) {
        return success();
    }
}

读取文件参数

public void readFile(HttpServletRequest request) {
    log.info(String.format("摄像头报警请求参数:%s", "文件"));
    // 由于HttpServletRequest不能直接取出文件数据,所以将其强制转换为MultipartHttpServletRequest
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
    log.info(String.format("摄像头报警请求参数:%s", String.valueOf(fileMap)));
    fileMap.forEach((key, value) -> {
        try {
            log.info(String.format("key:%s, value:%s", key, value.getName()));
            String filePath = RuoYiConfig.getUploadPath();  // 上传文件路径
            String fileName = FileUploadUtils.upload(filePath, value);
            log.info(String.format("文件已经下载:%s", fileName));
        } catch (IOException e) {
            log.error(e.getMessage());
            throw new RuntimeException(e);
        }

    });
}

读取非文件参数

public void readParams(HttpServletRequest request) {
     StringBuilder data = new StringBuilder();
     String line;
     BufferedReader reader;
     try {
         reader = request.getReader();
         while (null != (line = reader.readLine())) {
             data.append(line);
         }
     } catch (IOException e) {
         log.error(e.getMessage());
     }
     log.info(String.format("摄像头报警请求参数:%s", data));
 }

http://www.kler.cn/a/381978.html

相关文章:

  • 在软件工程开发中,瀑布式开发和螺旋式开发的优缺点比较
  • python 枚举(enum)
  • Liunx安装MYSQL
  • 学习RocketMQ(记录了个人艰难学习RocketMQ的笔记)
  • qt QStandardItem详解
  • [论文][环境]3DGS+Colmap环境搭建_WSL2_Ubuntu22.04 - 副本
  • PostgreSQL 到 PostgreSQL 数据迁移同步
  • 计算机网络——网络层导论
  • 云渲染与汽车CGI图像技术优势和劣势
  • 用 Python 写了一个天天酷跑(附源码)
  • 【docker入门】docker的安装
  • vue3中setup的作用是什么?
  • ELK实现加载多个配置日志文件
  • Jest进阶:测试 Vue 组件
  • WAPI认证过程如何实现?
  • stm32引脚PB3、PB4、PA15作为普通IO口用时,需要先解除调试端口复用
  • 基于SSM+uniapp的营养食谱系统+LW参考示例
  • 【数据结构与算法】LeetCode: 贪心算法
  • 【用Rust写CAD】前言
  • 【MATLAB源码-第208期】基于matlab的改进A*算法和传统A*算法对比仿真;改进点:1.无斜穿障碍物顶点2.删除中间多余节点,减少转折。
  • ONLYOFFICE 8.2深度体验:高效协作与卓越性能的完美融合
  • 学习threejs,将多个网格合并成一个网格
  • spring-第十三章 AOP
  • 【强化学习理论】基于策略的强化学习——深度确定性策略梯度算法
  • Python内置模块-Json:轻松处理数据交换的艺术
  • 项目实战使用gitee