Spring mvc 使用Spring 4.1实现基于JSON的REST API时出现错误406

Spring mvc 使用Spring 4.1实现基于JSON的REST API时出现错误406,spring-mvc,Spring Mvc,我使用Spring4.1框架实现了一些RESTAPI。尝试从浏览器访问REST API时,我遇到以下错误: 此请求标识的资源只能生成 根据请求,具有不可接受特征的响应 “接受”标题 我已经阅读了其他答案,我能够推断出我需要添加正确的Jackson库,并在spring中正确地启用MVC配置。我想我正在做这两件事,但问题仍然存在。除了spring jar之外,我还添加了以下Jackson库: jackson-annotations-2.4.0.jar jackson-core-2.4.2.jar j

我使用Spring4.1框架实现了一些RESTAPI。尝试从浏览器访问REST API时,我遇到以下错误:

此请求标识的资源只能生成 根据请求,具有不可接受特征的响应 “接受”标题

我已经阅读了其他答案,我能够推断出我需要添加正确的Jackson库,并在spring中正确地启用MVC配置。我想我正在做这两件事,但问题仍然存在。除了spring jar之外,我还添加了以下Jackson库:

jackson-annotations-2.4.0.jar jackson-core-2.4.2.jar jackson-core-asl-1.9.13.jar jackson-databind-2.4.2.jar jackson-mapper-asl-1.9.13.jar
我的配置类如下所示:

@EnableWebMvc
@Configuration
class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Bean
    public ViewResolver getViewResolver() {

        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setCache(true);
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;

    }
}
而请求类只是:

@RestController
public class SimpleController {
    @RequestMapping(value = "/example", method = RequestMethod.GET, headers="Accept=*/*", produces="application/json")
    public Account example() {
        //Just return the default data
        return new Account();
    }
}
请帮忙。我无法理解,我在这里错过了什么。 提前感谢。

此声明

headers="Accept=*/*"
基本上说,任何
Accept
头都是好的

您的请求包含

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 
因为您的方法在
@RestController
中,所以Spring将使用
RequestResponseBodyMethodProcessor
来处理方法的返回值。这一过程的一部分是选择一个可接受的代表。由于您的
*/*
匹配
text/html
,因此将选择
text/html
作为可接受的表示形式

Spring随后将尝试找到一个
HttpMessageConverter
,它可以将返回值转换为
text/html
。它找不到,因此将失败


完全删除
标题
属性,或者将其更改为
Accept=application/json
,该属性将与请求的
*/*

匹配。根据请求“Accept”,此请求标识的资源只能生成具有不可接受特征的响应标题。
Accept您发送的标题是什么?我如何找到?我正在发送此标题:headers=“Accept=*/*”您如何发送请求?另外,不要混用杰克逊版本。使用2。就这样。我只试过杰克逊版本2。没有区别。我使用localhost:8080/myservlet/example等浏览器发送请求打开浏览器的网络控制台并检查标题。
Accept=*/*
真的存在吗?我删除了headers属性,但没有任何区别。错误仍然是一样的。@Aarkan您删除它后重建了吗?我工作得很好。将您的日志转到调试级别,检查Spring输出的内容。我感谢您的帮助,非常感谢。我交叉检查了构建并重命名了端点,但结果仍然相同,我得到了相同的错误。如何更改Spring的日志记录级别?@Aarkan您需要在配置log4j或logback的情况下获取slf4j。