当前位置: 首页 > 知识库问答 >
问题:

Spring MVC-如何在处理HttpMediatypeNotAcceptableException时设置返回媒体类型?

别兴国
2023-03-14

我有一个Spring3.2MVC REST服务,它通过扩展ResponseEntityExceptionHandler来实现错误处理。这将处理标准的Spring异常,并根据客户机的请求使用适当的HTTP状态和XML或JSON中的自定义“Error”ResponseEntity对象进行响应。除了HttpMediatypenotAcceptableException之外,这对所有标准异常都非常有效。

这个异常的问题在于,首先抛出它的原因是因为无法从请求中确定响应媒体类型(application/xml、application/json等)。如果我试图为这个异常返回一个“error”ResponseEntity对象,它将失败,因为无法确定响应媒体类型(这就是为什么首先要处理这个异常)...基本上会从我的ExceptionHandler中抛出另一个HttpMediatypeNotAcceptableException

在处理HttpMediatypeNotAcceptableException时,我需要找出一种方法来指定有效的响应媒体类型,以便ResponseEntity将其提交给客户机。由于无法确定请求的媒体类型,这可能只是我的服务(application/xml)的默认值

有什么想法吗?

共有1个答案

闽高峯
2023-03-14

编辑:这个答案很没用,请看下面的评论。对不起。

在本例中,通信非常混乱,也许将状态代码设置为400-Bad request就足够了,并希望客户机不会期望以服务器不知道的格式得到机器可读的答案。如果发送了响应正文,可以使用content-type:text/plain-这对客户机没有用,但可能是调试情况的人;)好吧,或者任何适合您的方式。

更新:一个更合适的解决办法可能是使用手册中解释的方法;网址:http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-customer-servlet-container-error-page。

 类似资料:
  • 我在Spring Boot应用程序中配置了SpringFox Swagger。当我尝试访问“HTTP://localhost:8080/swagger-ui.html”时,看到的是HTTP 406(HttpMediaTypeNotAcceptableException

  • 问题内容: 我找不到ctypes如何弥合Python和Python之间的鸿沟。没有提到互联网上的任何地方。这是不好的做法吗,不存在还是我错过了什么? C ++ :xxx.cpp 的Python: xxx.py 问题答案: 特殊原因是速度很重要。我正在创建一个应该能够处理大数据的应用程序。在200,000行中,必须按300个值(200k x 300矩阵)计算缺失。我相信,但是如果我错了,请纠正我,C

  • 问题内容: 关于Restlet客户端如何处理媒体类型标头,我有几个新手问题: 如果我传入类型a)POJO或b)InputStream实例的实体,Restlet客户端将在“ content-type”标头中放入什么?那么“ accept”头是什么? 如果我想在HTTP正文中以JSON格式传输POJO,我是否需要序列化POJO并将其作为JSON字符串传递,还是可以仅传递POJO而Restlet会完成其

  • 为了概括这个问题,我借用了Zelenski CS课堂讲义中的材料。而且,这与我的具体问题有关,因为几年前我从另一位讲师那里学习了C语言的这种方法。讲义在这里。我对C的理解很低,因为我偶尔使用它。基本上,我需要编写一个程序的几次,我回到课堂材料,找到类似的东西,然后从那里开始。 在本例(第4页)中,Julie正在字符串函数中使用递归算法查找单词。为了减少递归调用的数量,她添加了一个决策点。 为了增加

  • 在服务器启动中注册了多部分功能: 简单的测试后API: 服务器响应:

  • 问题内容: 当用Java编程时,我几乎总是出于习惯,编写如下代码: 大多数时候甚至都没有考虑它。现在,问题是:我应该 始终 将接口指定为返回类型吗?还是建议使用接口的实际实现,如果是,在什么情况下使用? 显然,使用该接口有很多优点(这就是为什么它存在的原因)。在大多数情况下,库函数使用哪种具体实现并不重要。但也许在某些情况下确实很重要。例如,如果我知道我将主要随机访问列表中的数据,那将是一个坏习惯