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自动转换。

打完收工!

相关推荐
令狐少侠20111 小时前
若依微服务版启动小程序后端
java·spring boot·maven
程序猿大波1 小时前
基于Java,SpringBoot,Vue,HTML家政服务预约系统设计
java·vue.js·spring boot
小巫程序Demo日记2 小时前
Spring Cache与Redis集成原理
数据库·spring boot·python
只恨天高2 小时前
SpringBoot异常处理之注解@ExceptionHander和@ControllerAdvice
java·spring boot·spring
小杨4042 小时前
springboot框架项目实践应用二十(扩展mybatis插件及原理解析)
spring boot·后端·mybatis
MacroZheng3 小时前
狂揽77k star!GitHub官方支持的画图神器,用起来够优雅!
java·spring boot·后端
爱的叹息3 小时前
关于 Spring Boot 监控方式的详细对比说明及总结表格
java·spring boot·后端
努力的搬砖人.3 小时前
Spring Boot整合Kafka的详细步骤
spring boot·后端·kafka
谦行4 小时前
前端视角 Java Web 入门手册 5.6:真实世界 Web 开发——Redis
java·spring boot·后端
风象南4 小时前
SpringBoot中4种接口幂等性实现策略
java·spring boot·后端