将Xml请求转换为Object Spring Boot

问题描述 投票:0回答:2

创建了一个spring boot rest服务,它接受XML作为请求并将其转换为对象,然后将其插入到数据库中。我使用Jackson dataformat依赖项直接将xml请求转换为对象但收到错误。

控制器类如下

@RequestMapping(value = "/getRequestData",method=RequestMethod.POST,
        produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE},consumes={MediaType.APPLICATION_XML_VALUE})
    public ResponseEntity<?> putDataIntoDatabase(@RequestBody FirstRequestorBean bean) {

        logger.info(bean.getId());
        return new ResponseEntity<String>(HttpStatus.OK);
    }

和bean类

public class FirstRequestorBean {


    private String name;
    private String id;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }



}

这里传递的xml是

<?xml version="1.0" encoding="UTF-8"?>
<FirstRequestorBean>
    <name>Akhil</name>
    <id>1</id>
</FirstRequestorBean>  

获取不受支持的媒体类型例外。

有人可以指出如何解决这个问题

java xml spring spring-mvc spring-boot
2个回答
0
投票

您的发布请求将具有“内容类型”,需要与您的请求映射的“消耗”参数匹配。

对于XML,有两种类型“application / xml”和“text / xml”,接受这两种类型是很好的做法,(MediaType.APPLICATION_XML_VALUEMediaType.TEXT_XML_VALUE)。

另外你有:produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}这是你的返回类型,你只需要在实际返回一些内容时定义它,看到只是设置状态代码然后应该删除它。


-1
投票
  1. 添加MediaType.APPLICATION_XML_VALUE以接受请求映射上的XML数据形式。例如: - (此处应用程序接受JSON和XML格式作为请求)@PostMapping(value =“/ users / add”,consume = {MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_VALUE})
  2. 将@XmlRootElement注释添加到bean类中
  3. 在请求的标头中添加适当的Content-Type(application / json或application / xml)
© www.soinside.com 2019 - 2024. All rights reserved.