Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring REST XML服务不接受XML为;接受;标题_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring REST XML服务不接受XML为;接受;标题

Java Spring REST XML服务不接受XML为;接受;标题,java,spring,spring-mvc,Java,Spring,Spring Mvc,我定义了几个REST服务,它们当前将JSON格式的对象作为服务响应体返回。我试图让这个服务也接受XML作为一个新的需求,尽管它不接受这一点 我遵循的是,并且设置了几乎相同的pom.xml依赖项,我的服务定义同样非常简单 @Controller @RequestMapping(value = "api/sales/*") public class SalesController { @RequestMapping(value = "/countries", method = Reques

我定义了几个REST服务,它们当前将JSON格式的对象作为服务响应体返回。我试图让这个服务也接受XML作为一个新的需求,尽管它不接受这一点

我遵循的是,并且设置了几乎相同的
pom.xml
依赖项,我的服务定义同样非常简单

@Controller
@RequestMapping(value = "api/sales/*")
public class SalesController {

    @RequestMapping(value = "/countries", method = RequestMethod.GET)
    @ResponseBody
    public List<NamedEntity> getCountries() {
将@products(“application/xml”)添加到getCountries()

将@products(“application/xml”)添加到getCountries()中

检查请求头,客户端需要在头中有“application/xml”,而不是“application/json”

说到这里,请确保您已经为您的对象注册了适当的消息转换器。如果您使用的是Java6,那么Spring将自动检测类路径中的JAXB,或者您可以手动添加转换器

检查请求头,客户端需要在头中有“application/xml”,而不是“application/json”

说到这里,请确保您已经为您的对象注册了适当的消息转换器。如果您使用的是Java6,那么Spring将自动检测类路径中的JAXB,或者您可以手动添加转换器

您需要发送“application/xml”,而不是“application/application+xml”。同时考虑使用:

@RequestMapping(value = "/countries", method = RequestMethod.GET, produces={"application/json", "application/xml"})
这将确保您的方法仅响应这些媒体类型,并拒绝使用406 HTTP状态代码的其他媒体。

您需要发送“应用程序/xml”,而不是“应用程序/application+xml”。同时考虑使用:

@RequestMapping(value = "/countries", method = RequestMethod.GET, produces={"application/json", "application/xml"})

这将确保您的方法仅响应这些媒体类型,并拒绝使用406 HTTP状态代码的其他媒体。

尝试此dispatcher servlet配置

<mvc:annotation-driven
        content-negotiation-manager="contentManager" />

<bean id="contentManager"
        class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
        <property name="favorPathExtension" value="false" />
        <property name="ignoreAcceptHeader" value="false" />
        <property name="defaultContentType" value="application/json" />
        <property name="useJaf" value="false" />
    </bean>

还有一些依赖性

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.4.3</version>
        </dependency>

com.fasterxml.jackson.core
杰克逊核心
2.4.3
com.fasterxml.jackson.core
杰克逊数据绑定
2.4.3
com.fasterxml.jackson.core
杰克逊注释
2.4.3
com.fasterxml.jackson.dataformat
jackson数据格式xml
2.4.3

尝试此dispatcher servlet配置

<mvc:annotation-driven
        content-negotiation-manager="contentManager" />

<bean id="contentManager"
        class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
        <property name="favorPathExtension" value="false" />
        <property name="ignoreAcceptHeader" value="false" />
        <property name="defaultContentType" value="application/json" />
        <property name="useJaf" value="false" />
    </bean>

还有一些依赖性

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.4.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.4.3</version>
        </dependency>

com.fasterxml.jackson.core
杰克逊核心
2.4.3
com.fasterxml.jackson.core
杰克逊数据绑定
2.4.3
com.fasterxml.jackson.core
杰克逊注释
2.4.3
com.fasterxml.jackson.dataformat
jackson数据格式xml
2.4.3

这似乎不起作用,提到的示例也没有此注释,我将更新帖子以显示spring中的示例控制器。这似乎不起作用,提到的示例也没有此注释,我将更新我的帖子,展示spring中的示例控制器。客户端确实有正确的accepts子句
application/application+xml
,我使用的是JDK7,但经过重构,切换回JDK6,但仍然无法工作。我还将jaxb添加到我的POM中,但运气不好,我的curl调用行是'curl-H“Accept:application/application+xml”-X GET'`它使用相同的
Accept
对spring示例项目很有效。客户端确实有正确的accepts子句
application/application+xml
,我使用的是JDK7,但经过重构,切换回JDK6,但仍然无法工作。我还将jaxb添加到我的POM中,但运气不好,我的curl调用行是'curl-H“Accept:application/application+xml”-X GET'`,它使用相同的
Accept
来处理spring示例项目。