马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、概况
在实际的开发应用当中,我们偶然必要开放一个公共的接口让第三方给我们推送数据,但是很多第三方厂家买的是别人的软件或者交接职员不是开发职员,没有程序源码,不知道推送的是什么格式的数据。
这就必要我们自己使用代码解析出来,在这里可以借用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));
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |