我有一个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。
答案 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:
进行ResponseEntryHttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
ResponseEntity.status(HttpStatus.OK)
.contentType(MediaType.APPLICATION_JSON)
.headers(headers);