gpt4 book ai didi

java - 如何强制 Spring boot 的 @RequestBody 接受 XML

转载 作者:行者123 更新时间:2023-12-05 03:34:28 27 4
gpt4 key购买 nike

我有一个带有 groovy (jdk 11) 的 spring boot 应用程序,我想接受一个 xml 请求正文。这是我的 Controller :

@RestController
class UserController {
@PostMapping(path = "/herd", produces = APPLICATION_XML_VALUE, consumes = APPLICATION_XML_VALUE)
void saveHerd(@RequestBody Users request) {
println user.name
}
}

我的 xml 请求正文:

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user name="foo" age="4"/>
<user name="Jack" age="8"/>
</users>

用户 pojos:

class Users {
List<UserDTO> user
}

class UserDTO {
String name
String age
}

问题是我的请求返回的内容类型“application/xml;charset=UTF-8”不受支持]

如果我调试我的应用程序,我发现 spring web 出于某种原因仍然需要一个 json,即使我已将消费指定为 XML。

为什么 Spring-boot 仍然需要 json 而不是 XML?

最佳答案

尝试在 Users.class 的类级别添加以下注释

      @XmlRootElement

如果包含 jaxb 库,还要检查你的 maven,因为你没有提到你使用的是哪个 JDK。您需要此库来编码解码 xml,但已从 JDK 11 及更高版本中删除。

编辑:由于您使用的是 JDK 11 并且 jaxb 已从此版本中删除,因此请添加以下依赖项

<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>

关于java - 如何强制 Spring boot 的 @RequestBody 接受 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70138672/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com