将Xml请求转换为Object Spring引导

问题描述:

创建一个spring引导休息服务,它接受XML作为请求并将其转换为对象,然后将其插入到数据库中。 我使用Jackson数据格式依赖关系直接将xml请求转换为对象,但出现错误。将Xml请求转换为Object Spring引导

控制器类是如下

@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> 

得到一个不支持的媒体类型的异常。

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

+0

尝试移除您的XML文件头'并尝试添加MediaType.TEXT_XML。 – CrazySabbath

+0

produits = {MediaType.TEXT_XML_VALUE},consumes = {MediaType.TEXT_XML_VALUE})尝试添加此@CrazySabbath .still相同的错误 – Akhil

+0

您拼错了评论,或者您不了解我。您是否尝试添加“TEXT_XML”(注意,不是“TEXT_XML_VALUE”)并删除xml标题? – CrazySabbath

你的帖子的请求将有一个“内容类型”,这需要匹配为您的请求映射“消耗”参数。

对于XML,有两种类型“application/xml”和“text/xml”,最好接受这两种类型(MediaType.APPLICATION_XML_VALUE & MediaType.TEXT_XML_VALUE)。

另外你有: produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}这是你的返回类型,你只需要定义这个,一旦你实际返回的东西,看到只有设置状态码,然后这应该被删除。

+0

我已经尝试了两个具体步骤,但仍然收到错误 – Akhil

+0

请求的内容类型是什么? – MartinByers

+0

嗨MartinByers,我能够解决这个问题,据说是使用工具Jmeter,我没有设置适当的接受头,之后它工作。更多的工具设置问题,那么它是代码。谢谢你的支持 – Akhil

  1. 添加MediaType.APPLICATION_XML_VALUE接受你的请求映射数据的XML格式。 例如: - (这里应用,可同时接收JSON和XML格式作为请求) @PostMapping(值= “/用户/添加”,消耗= {MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_VALUE})
  2. 添加@XmlRootElement注释到bean类
  3. 添加适当内容类型(应用/ JSON或application/XML)在您的请求的头部