Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
来自spring启动应用程序的响应是JSON格式,而不是xml格式?_Xml_Spring Boot - Fatal编程技术网

来自spring启动应用程序的响应是JSON格式,而不是xml格式?

来自spring启动应用程序的响应是JSON格式,而不是xml格式?,xml,spring-boot,Xml,Spring Boot,有spring启动应用程序(web+jpa) 所以,我有一个控制器: @RestController public class CustomerController { @Autowired private CustomerService customerService; @RequestMapping(value = "/customers", method = RequestMethod.GET) public @ResponseBody List<Customer&

有spring启动应用程序(web+jpa) 所以,我有一个控制器:

@RestController
public class CustomerController {
    @Autowired
    private CustomerService customerService;

@RequestMapping(value = "/customers", method = RequestMethod.GET)
public @ResponseBody List<Customer> findAllCustomers() {
    return customerService.findAllCustomers();
}

@RequestMapping(value = "/customers", method = RequestMethod.POST)
public void addCustomer(@RequestBody Customer customer) {
    customerService.addCustomer(customer);
}
以及绑定jpa和rest的服务层

当我提出要求时:

<customer>
    <id>first</id>
    <name>first name of metric</name>
</customer>

第一
公制名称

好的,客户添加到数据库中,但是,当我尝试获取所有客户时,响应是json格式的,但我希望是xml。如何解决此问题?

将控制器方法标记为生成
application/xml
响应(
products=MediaType.application\u xml\u VALUE
)。

将控制器方法标记为生成
application/xml
响应(
products=MediaType.application\u xml\u VALUE
).

我认为调用rest方法时使用了错误的接受类型


@ResponseBody
将根据外部客户端的功能和类路径上可用的库自动序列化返回值。如果Jackson在类路径上可用,并且客户机已经表示可以接受JSON,那么返回值将自动作为JSON发送。如果JRE为1.7或更高版本(这意味着JAXB包含在JRE中),并且客户机已表示可以接受XML,则返回值将自动作为XML发送。

我认为您在调用rest方法时使用了错误的接受类型

@ResponseBody
将根据外部客户端的功能和类路径上可用的库自动序列化返回值。如果Jackson在类路径上可用,并且客户机已经表示可以接受JSON,那么返回值将自动作为JSON发送。如果JRE为1.7或更高版本(这意味着JAXB包含在JRE中),并且客户端已表示可以接受XML,则返回值将自动作为XML发送。

通过添加

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>

com.fasterxml.jackson.dataformat
jackson数据格式xml
通过添加

    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
    </dependency>

com.fasterxml.jackson.dataformat
jackson数据格式xml

HTTP状态406–不可接受描述根据请求中接收到的主动协商标头字段,目标资源没有用户代理可以接受的当前表示形式,服务器不愿意提供默认表示形式。请求标头应包含“Accept”其值为“application/xml”HTTP Status 406–不可接受的描述根据请求中接收到的主动协商标头字段,目标资源没有用户代理可以接受的当前表示形式,并且服务器不愿意提供默认表示。请求的标头应包含“Accept”,其值为“application/xml”。您不能公开xml列表。您还需要一个XML包装器。要返回的XML必须是有效的XML。不能公开XML列表。您还需要一个XML包装器。要返回的XML必须是有效的XML。如果我使用Postman进行测试,这对我意味着什么?添加标题内容类型:application/xml?您需要将请求标题Accepts set添加到application/xml。@VladislavOsipenkov如果我使用Postman进行测试,您可以在这里阅读完整答案,这对我意味着什么?添加标题内容类型:application/xml?您需要将请求标题Accepts set添加到application/xml。@VladislavOsipenkov您可以在这里阅读完整答案