将Xml请求转换为Object Spring Boot

时间:2017-07-27 10:57:09

标签: java xml spring spring-mvc spring-boot

创建了一个spring boot rest服务,它接受XML作为请求并将其转换为object,然后将其插入到数据库中。 我使用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>  

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

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

2 个答案:

答案 0 :(得分:0)

您的帖子请求将包含&#34;内容类型&#34;需要匹配&#34;消费&#34;请求映射的参数。

对于XML,有两种类型&#34; application / xml&#34;和&#34; text / xml&#34;最好同时接受(MediaType.APPLICATION_XML_VALUE&amp; MediaType.TEXT_XML_VALUE)。

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

答案 1 :(得分:-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)