"Could not find acceptable representation"使用spring-boot-starter-web。

14 浏览
0 Comments

"Could not find acceptable representation"使用spring-boot-starter-web。

我正在尝试使用spring-boot-starter-web创建一个REST服务,用于提供Java对象的JSON表示。据我所了解,这个boot-starter-web jar应该通过Jackson自动处理JSON转换,但我却得到了这个错误。

{

"timestamp": 1423693929568,

"status": 406,

"error": "Not Acceptable",

"exception": "org.springframework.web.HttpMediaTypeNotAcceptableException",

"message": "Could not find acceptable representation"

}

我的Controller如下...

@RestController
@RequestMapping(value = "/media")
public class MediaController {
    @RequestMapping(value = "/test", method = RequestMethod.POST)
    public @ResponseBody UploadResult test(@RequestParam(value="data") final String data) {
      String value = "hello, test with data [" + data + "]"; 
      return new UploadResult(value);
    }
    @RequestMapping(value = "/test2", method = RequestMethod.POST)
    public int test2() {
        return 42;
    }
    @RequestMapping(value = "/test3", method = RequestMethod.POST)
    public String test3(@RequestParam(value="data") final String data) {
        String value = "hello, test with data [" + data + "]"; 
        UploadResult upload = new UploadResult(value);
        return upload.value;
    }
    public static class UploadResult {
        private String value;
        public UploadResult(final String value)
        {
            this.value = value;
        }
    }
}

我的pom.xml如下...


    org.springframework.boot
    spring-boot-starter-web
    1.2.1.RELEASE


    org.springframework.boot
    spring-boot-starter-tomcat
    1.2.1.RELEASE
    provided

mvn dependency:tree显示spring-boot-starter-web确实依赖于jackson2.4 databind,因此应该在类路径上...

[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.2.1.RELEASE:compile

[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.2.1.RELEASE:compile

[INFO] | | +- org.springframework.boot:spring-boot:jar:1.2.1.RELEASE:compile

[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.2.1.RELEASE:compile

[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.2.1.RELEASE:compile

[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.8:compile

[INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.8:compile

[INFO] | | \- org.yaml:snakeyaml:jar:1.14:runtime

[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.4:compile

[INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.4.0:compile

[INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.4.4:compile

[INFO] | +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile

[INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile

[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile

[INFO] | | \- com.fasterxml:classmate:jar:1.0.0:compile

[INFO] | +- org.springframework:spring-web:jar:4.1.4.RELEASE:compile

[INFO] | | +- org.springframework:spring-aop:jar:4.1.4.RELEASE:compile

[INFO] | | | \- aopalliance:aopalliance:jar:1.0:compile

[INFO] | | +- org.springframework:spring-beans:jar:4.1.4.RELEASE:compile

[INFO] | | \- org.springframework:spring-context:jar:4.1.4.RELEASE:compile

[INFO] | \- org.springframework:spring-webmvc:jar:4.1.4.RELEASE:compile

[INFO] | \- org.springframework:spring-expression:jar:4.1.4.RELEASE:compile

...但调用test服务会出现上述错误。 test2test3正常工作,证明可能只是尝试转换为JSON失败了?我是否遗漏了某些配置问题或注释?根据我找到的所有示例,注释类以进行基本的Jackson JSON转换不再是必需的。

非常感谢您的帮助。

0
0 Comments

问题原因:使用了Lombok但没有在响应模型类中添加相应的注解。

解决方法:在响应模型类中添加Lombok的注解,例如@Getter和@Setter。

0
0 Comments

问题的出现原因是在调用一个RESTful服务时,使用了错误的Accept头部信息。解决方法是将Accept头部信息改为正确的application/json。此外,还可能是由于返回的数据类型不匹配导致的问题,可以尝试移除produces部分来解决。

0
0 Comments

问题原因:UpdateResult类没有公共的getter方法。

解决方法:为UpdateResult类添加公共的getter方法。

0