Java如何获取HttpServletRequest请求参数
作者:Monly21
我们常需要接口接收第三方推送的数据,由于第三方可能不具备开发能力,我们需要自行解析推送的数据格式,通过HttpServletRequest,我们可以解析字符串、JSON、XML以及文件等多种数据类型,本文介绍了如何在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)); }
到此这篇关于Java如何获取HttpServletRequest请求参数的文章就介绍到这了,更多相关Java HttpServletRequest请求参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!