如何仅使用Spring Resttemplate与JSON

时间:2012-04-25 10:02:59

标签: json spring http resttemplate

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

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

我的休息服务响应与第一个接受的类型。这是allways application / xml。

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

我使用Spring 3.1。

2 个答案:

答案 0 :(得分:13)

您需要设置HttpMessageConverter可用的RestTemplate列表,以覆盖默认值:

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

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

答案 1 :(得分:0)

如果您只想使用JSON或发送,那么从主题中不太清楚。 在第一种情况下(使用),您可以使用

为Controller注释
@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);