Spring 4 RestController JSON:根据请求“接受”标头,特征不可接受

2024-02-24

我正在使用 spring 4.1.1.RELEASE,并在 pom 中包含了 jackson-core-asl 1.9.13 和 jackson-mapper-asl 1.9.13,以使用 RestController 创建一个简单的应用程序。

这是回购协议:https://github.com/robikshrestha/samplespringrest.git https://github.com/robikshrestha/samplespringrest.git

这是失败的战争:https://github.com/robikshrestha/samplespringrest/tree/master/failingWar https://github.com/robikshrestha/samplespringrest/tree/master/failingWar

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mycompany</groupId>
    <artifactId>SampleContactApp</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>SampleContactApp</name>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.1.1.RELEASE</spring.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>7.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

这是我的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <servlet>
        <servlet-name>sample</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>sample</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

和我的sample-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="com.sample" />
    <mvc:annotation-driven />
</beans>

控制器类也很简单。 Sample 类确实有公共 getter 和 setter。

@RestController
@RequestMapping("/")
public class SampleController {

    @RequestMapping("/getSample")
    public Sample getSample() {
        Sample s = new Sample();
        s.setId(1);
        s.setName("abc");
        return s;
    }
}

当我通过浏览器发送请求时,我得到,

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

我尝试使用标头与其他 REST 工具发送请求

接受:应用程序/json

甚至尝试了 $.getJSON()、$.ajax() 等。 ,但仍然出现同样的错误。我已经尝试了 StackOverflow 中的所有其他相关线程,但问题仍然存在。


这个错误的窍门在于它可能会导致非常严重的错误。在 OP 的情况下,您会看到浏览器 GET 请求产生的错误(带有accept header */*)和正确的配置(在 OP 情况下是默认的最小工作配置),原因很可能是转换为表示时出现异常。

在这里,即使请求没有建议表示(也没有参数,也没有路径,也没有接受标头),但响应却抱怨

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

原因可能是:

  • 缺少的依赖项
  • 返回bean错误 (例如缺少吸气剂等)

as of Spring框架4.1,最低 Jackson 版本应为 2.1(推荐2.3) https://github.com/spring-projects/spring-framework/wiki/Migrating-from-earlier-versions-of-the-Spring-Framework#libraries,将您的 jackson 依赖项替换为这个依赖项

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

在这种情况下阻碍调试的一件事是,在 tomcat 7.0.5x 版本中,此依赖项在库中可用,这与以前的某些版本不同。所以你的代码在那个版本的 tomcat 中工作得很好,就像它一样

Spring MVC 3.x版本仍应使用

    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 4 RestController JSON:根据请求“接受”标头,特征不可接受 的相关文章

随机推荐

  • W/ManagedChannelImpl:[{0}] 无法解析名称。状态={1}

    我正在开发 Android 应用程序 并且实现了 FireStore 现在我不断收到此错误 它也会重复 W ManagedChannelImpl 0 Failed to resolve name status 1 有人知道这是什么吗 您的应
  • mvc 3 razor 使用 jquery 调用服务器端函数

    我正在使用此代码从服务器获取部分视图 并将其放入 div 中 ajax type POST url MyControler MyAction success function result partialView html result e
  • 存储过程事务

    我以前从未使用过事务 提交和回滚 现在我需要使用一个 我已经在网上检查了一些示例 以确保我实际上正确使用了它 但我仍然不确定我的编码是否正确 我希望有人能够审查并建议我这是否正确 基本上我有两个数据库用于一个应用程序 一种是存档 意味着不再
  • 从字符串中检索图像 url

    我正在解析一个 xml 文件 我可以 NSLog 解析 但我的问题是我需要从这个 字符串 获取图像 url p a href http www bubblesurprise com WPRESS APP wp content uploads
  • 通过 XML 设置 AdMob 横幅以匹配父级宽度

    我正在尝试设置 AdMob 横幅广告以匹配其父宽度 我尝试作为示例
  • 接口如何使单元测试和模拟变得更容易?

    人们常说 接口使模拟和单元测试变得更加容易 接口如何帮助解决这个问题 这是接口的本质提供许多实现 从而启用模拟 特别是在集成测试中 您可以提供依赖系统模型的版本 例如 Web 服务 而不是实际调用一个依赖系统甚至一个模块 或者一个复杂且难以
  • 带 LDAP 的 BitNami GitLab Stack 5.1.0-2

    I am 配置 https github com gitlabhq gitlabhq blob master doc install installation md ldap authenticationLDAP 用于BitNami Git
  • 如何在本地部署ssrs?

    如何在本地计算机上部署 ssrs 我正在使用 ssrs 2005 我不确定 2005 年的情况 但在 2008 年 您右键单击项目 gt 属性并更改以下内容 目标数据集文件夹 文件夹名称 DataSet目标数据源文件夹 文件夹名称 数据源目
  • org.apache.axis2.AxisFault:在 Web 服务中传递对象数组时,未知类型无法序列化

    我创建了一个以 DTO 作为参数的 Web 服务 DTO 包含一个对象数组 我已经生成了 WSDL 框架和客户端 如果我传递字符串数组 我会尝试调用 Web 服务 Serialized array new String a n 效果很好 现
  • 如何在 WordPress 多站点中显示最近的全局帖子

    我在 ayp no 上运行一个 wordpress 多站点 我正在尝试找出一种方法来呈现所有子站点的徽标和所有博客的最新帖子 我知道有一个 wpmudev 高级插件 但我希望有一些编码我可以自己做 好吧 显然不是我自己 但至少在这里问一下并
  • 在 Swift 中更改 UITabBar selectedItem

    如何以编程方式更改 UITabBar 中的选定项目 Swift 3 及更高版本 从 Swift 3 开始 您还可以使用 tabBarController selectedIndex 0 or any other existing index
  • 优雅地崩溃内核

    后续 CUDA 停止所有其他线程 https stackoverflow com questions 3735786 cuda stop all other threads 我正在寻找一种在发生 不良情况 时退出内核的方法 编程手册说 NV
  • graphviz 中的子图布局

    我有显示两个子图的代码 graph rankdir LR subgraph cluster01 label t 0 a0 label A a1 label B a2 label C a5 label E a0 a1 a1 a2 a2 a0
  • 使用自定义表单替换部分 Outlook 客户端窗口

    我正在为 Outlook 客户端开发 VSTO 应用程序 我正在尝试在 Outlook 客户端窗口的部分中打开我的表单 该部分在下图中以红色突出显示 我认为我不能使用表单区域 因为它们替换了单个项目的视图 所以基本上我想做的是当我单击工具栏
  • 分段读取 CSV 文件的策略?

    我的计算机上有一个中等大小的文件 4GB CSV 但没有足够的 RAM 来读取该文件 64 位 Windows 上为 8GB 在过去 我只是将其加载到集群节点上并将其读入 但我的新集群似乎任意将进程限制为 4GB RAM 尽管每台机器的硬件
  • 提交到 App Store 的应用程序和应用程序更新必须使用 Xcode 5.1.1 或更高版本以及 iOS 7 SDK 构建

    今天使用新的 iTunes 连接网页时出现此错误 我的xCode版本是 我的SDK是 我之前提交的内容是使用旧网页进行的 现在新网页不断抱怨我的新版本出现此错误 有人看到同样的问题吗 好的 这可能是他们网站的问题 现在刚刚尝试使用清理后的版
  • Android-Studio-1.2.RC 关于 Square 的 Okio 库参考的 Proguard 警告

    使用 Android Studio 1 2 RC 我在 gradle 中启用了 proguard minifyEnabled true and added these rules to my proguard rules pro dontw
  • 为什么使用 OleDb 导入 Excel 时会忽略第一个空行

    使用 Net 的 OleDb 我尝试导入一个 Excel 表 其中第一行可以为空 我想保留 DataTable 中的空行 以便稍后能够将单元格映射到 Excel 样式的单元格名称 A1 A2 但无论我做什么 第一行都会被删除 Excel 文
  • 列出 Cucumber 中所有可用的标签

    是否有命令行选项可以列出黄瓜测试套件中的所有标签 例如 我想要这样的东西 cucumber show tags foo feature 那会给我类似的东西 ci development regression wip 对于单个文件 cucum
  • Spring 4 RestController JSON:根据请求“接受”标头,特征不可接受

    我正在使用 spring 4 1 1 RELEASE 并在 pom 中包含了 jackson core asl 1 9 13 和 jackson mapper asl 1 9 13 以使用 RestController 创建一个简单的应用程