Spring Boot接收xml参数

学无止境,气有浩然!

Spring Boot接收xml参数


前言

最近工作又要做挡板,挡板的东西有点多😀,主要是因为下游是第三方收费的,提供的测试环境的数据不能随心所欲修改,只能通过挡板模拟。

这次的第三方下游系统也是通过xml进行传输的,不过这次是通过http协议的post请求,请求体是xml协议。


方案

当然我们可以通过接受这个请求体,然后把他变成转换成我们需要的bean,处理结果之后再将bean转换为xml字符串传递回去。

虽然是个笨办法,也是可以实现的。本次记录的是利用Spring Boot的自动转换来进行实现,会自动将请求体转换为bean,并且将bean转为xml自动返回。

秘诀就是@RequestBody

他会自动帮你转换成bean,但是需要引入相关依赖,就是之前博客提到的 Spring boot项目java bean和xml互转

实现

当按照上篇博客介绍的一切准备就绪之后,就会进行自动转换。

代码示例

  • Controller
java 复制代码
    @PostMapping(value = "/test", produces = {MediaType.APPLICATION_XML_VALUE})
    public ResponseEntity<ResultDto> test(@RequestBody RequestDto requestDto) {
        return ResponseEntity.ok(testService.test(requestDto));
    }
  • POJO

    • 请求
    java 复制代码
    @Setter
    @XmlRootElement(name="Request")
    public class RequestDto {
    
        private String name;
    
        private String password;
    
        private String mobile;
    
        private String idCard;
        @XmlAttribute
        public String getName() {
            return name;
        }
        @XmlAttribute
        public String getPassword() {
            return password;
        }
    
        @XmlAttribute
        public String getMobile() {
            return mobile;
        }
        @XmlAttribute
        public String getIdCard() {
            return idCard;
        }
    }
    • 响应
java 复制代码
@Setter
@XmlRootElement(name = "Response")
public class ResultDto {

    private String reason;
    private String retCode;
    private String errMsg;

    @XmlAttribute
    public String getReason() {
        return reason;
    }
    @XmlAttribute
    public String getRetCode() {
        return retCode;
    }
    @XmlAttribute
    public String getErrMsg() {
        return errMsg;
    }
}

说明:

  • @RequestBody会根据配置的XML(之前博客提到的),自动解析成所需要的bean。这里用到的是jax
  • 由于我需要的报文全是配置在方法体里的,所以全部使用的@XmlAttribute
  • 返回的报文也需要返回xml报文的,所以我们需要使响应responsecontent-type也是xml。这个时候就需要在@PostMappingproduces设置为XML,也就是MediaType.APPLICATION_XML_VALUE。他会根据配置的xmlbean自动转换。

打完收工!

相关推荐
二哈喇子!8 分钟前
SpringBoot项目右上角选择ProjectNameApplication的配置
java·spring boot
二哈喇子!29 分钟前
基于Spring Boot框架的车库停车管理系统的设计与实现
java·spring boot·后端·计算机毕业设计
二哈喇子!1 小时前
基于SpringBoot框架的水之森海底世界游玩系统
spring boot·旅游
二哈喇子!1 小时前
Java框架精品项目【用于个人学习】
java·spring boot·学习
二哈喇子!1 小时前
基于SpringBoot框架的网上购书系统的设计与实现
java·大数据·spring boot
二哈喇子!2 小时前
基于JavaSE的淘宝卖鞋后端管理系统的设计与实现
java·spring boot·spring
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-智能考试系统-学习分析模块
java·开发语言·数据库·spring boot·ddd·tdd
高山上有一只小老虎3 小时前
mybatisplus实现分页查询
java·spring boot·mybatis
毕设源码-朱学姐4 小时前
【开题答辩全过程】以 基于SpringBoot的律师事务所管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
毕设源码-朱学姐4 小时前
【开题答辩全过程】以 基于springboot的日用药品仓库管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端