11

我有一个以 XML 或 JSON 格式提供信息的休息服务。我使用 Spring Resttemplate 将我的应用程序连接到此服务。不幸的是,我的回复都是 XML 格式,而不是首选的 JSON 格式。我对请求的分析是,Spring Resttemplate 使用以下 Accept-Header 发送请求:

Accept: application/xml, text/xml, application/*+xml, application/json

我的第一个接受类型的休息服务响应。这总是应用程序/xml。

如何更改 Accept-Types 以便仅获得 json 响应?RestTemplate 的 bean 定义中是否有一些属性?

我为此使用 Spring 3.1。

4

2 回答 2

15

您需要设置一个可用的HttpMessageConverters列表RestTemplate以覆盖默认列表:

 RestTemplate rest = new RestTemplate();
 rest.setMessageConverters(Arrays.asList(new MappingJacksonHttpMessageConverter()));

如果您在 XML 中定义RestTemplate,请在 XML 语法中执行相同的操作。

于 2012-04-25T10:20:07.337 回答
1

如果您只想使用 JSON 或发送,则从主题中不太清楚。在第一种情况下(消耗),您可以使用注释您的控制器

@RequestMapping(value="/path", headers = "Accept=application/json")

在生产的情况下,您必须使用 contentType 进行 ResponseEntry:

HttpHeaders headers = new HttpHeaders();
        headers.add("Accept", "application/json");

        ResponseEntity.status(HttpStatus.OK)
                        .contentType(MediaType.APPLICATION_JSON)
                        .headers(headers);
于 2018-02-12T11:24:10.443 回答