【问题标题】:HttpMediaTypeNotAcceptableException: Could not find acceptable representation Spring bootHttpMediaTypeNotAcceptableException:找不到可接受的表示 Spring boot
【发布时间】:2017-10-18 05:08:37
【问题描述】:

我使用 Spring boot 使用以下依赖项创建了一项服务

<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 访问服务并提供接受作为应用程序/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)

不知道出了什么问题。请提出建议。

【问题讨论】:

  • 你的类路径中可能没有杰克逊。杰克逊将您的 pojo 转换为 json,我相信这是丢失的。因此这个例外。将杰克逊添加到您的 pom 中
  • jackson-mapper-asl-1.9.10.jar 和 jackson-core-asl-a.9.10.jar 在类路径中。在 Windows 中它工作正常。但在 mac 中,它能够在 xml 中生成输出,但在 json 中显示上述错误

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


【解决方案1】:

经过大量研究,我发现我使用的是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 中失败。我的灰色地带.. !!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-20
    • 1970-01-01
    • 2013-08-08
    • 2015-05-08
    • 2015-09-04
    • 2019-01-23
    相关资源
    最近更新 更多