Java:获取HttpServletRequest请求参数

目录


一、概况

在实际的开发应用当中,我们有时需要开放一个公共的接口让第三方给我们推送数据,但是很多第三方厂家买的是别人的软件或者交接人员不是开发人员,没有程序源码,不知道推送的是什么格式的数据。

这就需要我们自己使用代码解析出来,在这里可以借用HttpServletRequest来解析字符串、JSON、XML以及文件数据等。

二、程序源码

java 复制代码
@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();
    }
}

读取文件参数

java 复制代码
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);
        }

    });
}

读取非文件参数

java 复制代码
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));
 }
相关推荐
追随者永远是胜利者16 分钟前
(LeetCode-Hot100)169. 多数元素
java·算法·leetcode·go
蜜獾云27 分钟前
JAVA面试题速记-第1期-java基础
java·开发语言
百锦再44 分钟前
Java中的反射机制详解:从原理到实践的全面剖析
java·开发语言·jvm·spring boot·struts·spring cloud·kafka
没有bug.的程序员1 小时前
Gradle 构建优化深度探秘:从 Java 核心到底层 Android 物理性能压榨实战指南
android·java·开发语言·分布式·缓存·gradle
tianyagukechat1 小时前
rockylinux9.5 配置IP
java·网络·tcp/ip
程序员Sonder2 小时前
黑马java----正则表达式(一文弄懂)
java·正则表达式·新人首发
doris82042 小时前
Python 正则表达式 re.findall()
java·python·正则表达式
Anastasiozzzz2 小时前
阿亮随手记:动态条件生成Bean
java·前端·数据库
丹牛Daniel3 小时前
Java解决HV000183: Unable to initialize ‘javax.el.ExpressionFactory‘
java·开发语言·spring boot·tomcat·intellij-idea·个人开发
消失的旧时光-19433 小时前
智能指针(三):实现篇 —— shared_ptr 的内部设计与引用计数机制
java·c++·c·shared_ptr