gpt4 book ai didi

java - 在 Accept header 中指定 application/xml 时出现 HttpMediaTypeNotAcceptableException

转载 作者:行者123 更新时间:2023-11-30 04:19:03 26 4
gpt4 key购买 nike

抱歉,我没有看到 java-noob 的标签。

我在 Spring 中使用现有的 Restful api。我的任务是添加一个带有几个实用方法的新 api,每个方法都返回一个字符串。到目前为止,一切都很好。一切都运转良好。

我添加了一个简单的包装器来将字符串作为对象返回,并且我能够构建/部署/测试,并返回我的响应,如下所示

{ id: "12345" }

如果我指定 Accept header = application/xml 我会收到以下异常:

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

这个包中的其他方法似乎在 xml 和 json 中都可以很好地序列化。我没有看到 Controller 基础中使用任何自定义序列化代码,并且我不知道它在哪里处理(或者它是否与序列化相关)。 有人可以帮我弄清楚从哪里开始寻找吗?

这是我的[简化] Controller :

@Controller
public class UtilController extends ControllerBase
{

@XmlRootElement(name="util_response")
public static class UtilResponse extends APIResponseBase
{
private String id;

@XmlElement(name="id")
public String getId()
{
return id;
}

public void setId(String id)
{
this.id = id;
}
}

@RequestMapping(value = "/{pid}/util/output", method = RequestMethod.GET)
@ResponseBody
public UtilResponse output(HttpServletResponse httpResponse,
@PathVariable("pid") int pid,
@RequestParam(value = "id", required=true) String id) throws Exception
{
UtilResponse utilResponse = new UtilResponse();
utilResponse.setId(id);
return utilResponse;
}
}

我还尝试更新 @RequestMapping 并添加 products = "application/xml" (是的,显然不知道这到底是做什么的),但是效果为零.

说真的,我对所有这些 java 东西如何“工作”(.net dev by trade)真的很陌生,并且很想了解更多。我不知道 Jackson 是什么,但我在我们的项目中没有看到对它的引用,并且其他所有内容似乎都有效,因此请不要回复说“你为什么不直接使用 Jackson? ”我也有最后期限,所以有时优先考虑的是让它发挥作用。

最佳答案

please no responses that say "Why don't you just use Jackson?

没有人会这么说。 Jackson 适用于 JSON ;)

produces = "application/xml" ..., but that had zero effect

products 将处理程序方法限制为提供的类型。因此,products="application\xml" 使得该方法对于需要 JSON 的请求不可用,例如它不会改变方法的结果。

您对问题的描述表明 Spring 无法找到将 UtilResponse 序列化为 XML 的方法。最可能的原因是类路径中不存在 JAXB2。 Spring 默认使用它来创建 XML

关于java - 在 Accept header 中指定 application/xml 时出现 HttpMediaTypeNotAcceptableException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582373/

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