如何仅将Spring Resttemplate与JSON一起使用
我有一个rest服务,它以XML或JSON提供信息。我使用SpringRESTTemplate将我的应用程序连接到此服务。不幸的是,我的回答都是XML格式,而不是首选的JSON格式。我对请求的分析是,Spring Resttemplate发送带有以下Accept标头的请求:如何仅将Spring Resttemplate与JSON一起使用,json,spring,http,resttemplate,Json,Spring,Http,Resttemplate,我有一个rest服务,它以XML或JSON提供信息。我使用SpringRESTTemplate将我的应用程序连接到此服务。不幸的是,我的回答都是XML格式,而不是首选的JSON格式。我对请求的分析是,Spring Resttemplate发送带有以下Accept标头的请求: Accept: application/xml, text/xml, application/*+xml, application/json 我的rest服务对第一个接受类型的响应。这是allways applicatio
Accept: application/xml, text/xml, application/*+xml, application/json
我的rest服务对第一个接受类型的响应。这是allways application/xml
如何更改Accept类型以便只获得json响应?RestTemplate的bean定义中是否有一些属性
为此,我使用Spring 3.1。您需要设置一个可用于
RestTemplate
的HttpMessageConverter
列表,以覆盖默认列表:
RestTemplate rest = new RestTemplate();
rest.setMessageConverters(Arrays.asList(new MappingJacksonHttpMessageConverter()));
如果在XML中定义
RestTemplate
,请在XML语法中执行相同的操作。如果您只想使用JSON或发送JSON,本主题不太清楚。
在第一种情况下(消费),您可以使用
@RequestMapping(value="/path", headers = "Accept=application/json")
在生成时,您必须使用contentType进行响应尝试:
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
ResponseEntity.status(HttpStatus.OK)
.contentType(MediaType.APPLICATION_JSON)
.headers(headers);
我已经这样定义了rest模板:但是Accpet头仍然是:接受:application/xml,text/xml,application/*+xml,application/json@adrian:不可能。也许您使用了不同的
restemplate
实例。您是对的。还有另一个rest模板bean。很抱歉,您的解决方案在新版本中运行良好,尽管它是:MappingJackson2HttpMessageConverter.class