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));
 }
相关推荐
04Koi.18 小时前
面经分享--华为Java一面
java·开发语言
白露与泡影19 小时前
2025最新“Java 面试八股文 + 各大厂的面试真题”限时开源
java·面试·开源
Pure031919 小时前
Spring 循环依赖问题
java·数据库·spring
路在脚下@19 小时前
Spring Security的@PreAuthorize注解为什么会知道用户角色?
java
一只叫煤球的猫19 小时前
Java实战:一个类让Java也用上JS的async/await
java·后端·性能优化
黄焖鸡能干四碗19 小时前
固定资产管理系统(蓝牙标签打印+移动端Java+Vue+Uniapp源码)
java·开发语言·vue.js·eclipse·uni-app
皮皮林55120 小时前
Java jar 如何防止被反编译?代码写的太烂,害怕被人发现
java
程序猿毕设源码分享网20 小时前
springboot医院信管系统源码和论文
java·spring boot·后端
叫我阿柒啊21 小时前
Java全栈开发面试实战:从基础到微服务的全面解析
java· spring boot· vue.js· 微服务· rest api· 数据库· 测试
桦说编程21 小时前
数据丢失,而且不抛出并发异常,多线程使用HashMap踩坑
java·数据结构·后端