gpt4 book ai didi

spring - 415 Spring中不支持的媒体类型JAXB

转载 作者:行者123 更新时间:2023-12-04 01:15:07 25 4
gpt4 key购买 nike

My headers for POST setup
Main POST setup

我有点卡在这里。我正在尝试从 firefox 的海报发布一小段 XML。

 <IntellexEvent>
<RuleName>a rule name</RuleName>
</IntellexEvent>

很简单,现在我的类(class) IntellexEvent

@XmlRootElement(name = "IntellexEvent")
public class IntellexEvent {
// @XmlElement(name = "RuleName")
private String RuleName;
public String getRuleName()
{
return RuleName;
}

public void setRuleName(String RuleName)
{
this.RuleName = RuleName;
}

}

我的 Controller 是...

@Controller

@RequestMapping("/cace/**")
public class CaceController
{
@Autowired
IUserService userService;

public CaceController()
{

}

@RequestMapping(value = "/cace/postXML", method = RequestMethod.POST)
public Result postXML(@RequestBody String intellexEvent) throws Exception
{
String temp = intellexEvent;

Result result = new Result();
result.setStatusCode(200);
result.setSuccess(true);
return result;
}

}

——编辑——
所以在这里我将@RequestBody 作为字符串。我想要的是将它自动编码到 IntellexEvent .... 作为一个字符串,我可以在 POST 上命中我的后端,当我将字符串更改为 IntellexEvent 时,我收到 415 错误。

我只是希望能够访问我的后端,我已经尝试过 GET,并且我击得很好,(我没有将它们包含在我的 Controller 中)我在这里错过了什么?在 spring-mvc-servlet.xml 中,我定义了 jaxb2 编码器。如果您需要更多信息,请询问,提前致谢!

最佳答案

您可能错过了 Content-Type标题,应该是 application/xml ,这是为了让 Spring-MVC 知道您正在发布一个 xml。此外,如果您希望响应是一个 xml,您可以使用 @ResponseBody 注释您的 postXML 方法。并有一个 Accept application/xml 的标题.

postXML 应如下所示:

@RequestMapping(value = "/cace/postXML", method = RequestMethod.POST)
public @ResponseBody Result postXML(@RequestBody IntellexEvent intellexEvent) throws Exception

我注意到的另一件事是您需要取消注释 @XmlElement(name = "RuleName")ruleName字段,否则标签最终将是 <ruleName/>

关于spring - 415 Spring中不支持的媒体类型JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977501/

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