HttpMediaTypeNotAcceptableException:找不到可接受的表示形式Spring boot

时间:2017-05-18 11:44:28

标签: json spring web-services spring-boot jackson

我使用以下依赖项

使用Spring启动创建了一个服务
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2.RELEASE</version>
</parent>

现在在我的控制器类中,我写了以下内容:

@RestController
 @RequestMapping("/abc")
 public class WebController {



    @RequestMapping(value = "/test/{value}", method = RequestMethod.GET, produces =  {"application/json", "application/xml" })
        public ResponseEntity<Ack> getTest(@PathVariable("value") String value) {
            Ack ack = new Ack();
            ack.setResponse(value);
            ack.setStatus(HttpStatus.OK.value());
            return new ResponseEntity<Ack>(ack, HttpStatus.OK);
        }
}

Ack是POJO,它有每个属性的setter和getter。

当我在Windows机器上运行时,我将以json和XML格式输出。但在使用邮递员的Mac中,我使用URL命名服务:http://IP:8443/abc/test/123并提供accept作为application / xml我以XML格式获取输出。当我使用application / json时,我收到的错误如下:

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:260)
at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:203)
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:381)
at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:59)
at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:136)

不确定出了什么问题。请建议做什么。

1 个答案:

答案 0 :(得分:0)

经过大量研究后,我发现我正在使用的jackson api版本(如下所述)

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.8.4</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.4</version>
    </dependency>

虽然在我使用时

,但无法提供JSON输出
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.3.0</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.3.0</version>
    </dependency>

它就像一个魅力。我将此标记为上面发布的问题的解决方案,但仍然无法找出原因?为什么在Windows中它工作以及为什么它在Mac中失败。灰色区域对我来说.. !!!