将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>
得到一个不支持的媒体类型的异常。
可以有人指出,如何解决这个问题
你的帖子的请求将有一个“内容类型”,这需要匹配为您的请求映射“消耗”参数。
对于XML,有两种类型“application/xml”和“text/xml”,最好接受这两种类型(MediaType.APPLICATION_XML_VALUE
& MediaType.TEXT_XML_VALUE
)。
另外你有: produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}
这是你的返回类型,你只需要定义这个,一旦你实际返回的东西,看到只有设置状态码,然后这应该被删除。
我已经尝试了两个具体步骤,但仍然收到错误 – Akhil
请求的内容类型是什么? – MartinByers
嗨MartinByers,我能够解决这个问题,据说是使用工具Jmeter,我没有设置适当的接受头,之后它工作。更多的工具设置问题,那么它是代码。谢谢你的支持 – Akhil
- 添加MediaType.APPLICATION_XML_VALUE接受你的请求映射数据的XML格式。 例如: - (这里应用,可同时接收JSON和XML格式作为请求) @PostMapping(值= “/用户/添加”,消耗= {MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_VALUE})
- 添加@XmlRootElement注释到bean类
- 添加适当内容类型(应用/ JSON或application/XML)在您的请求的头部
尝试移除您的XML文件头'并尝试添加MediaType.TEXT_XML。 – CrazySabbath
produits = {MediaType.TEXT_XML_VALUE},consumes = {MediaType.TEXT_XML_VALUE})尝试添加此@CrazySabbath .still相同的错误 – Akhil
您拼错了评论,或者您不了解我。您是否尝试添加“TEXT_XML”(注意,不是“TEXT_XML_VALUE”)并删除xml标题? – CrazySabbath