将我的自定义http标头添加到Spring RestTemplate请求/扩展RestTemplate

我目前的代码:

RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); Mall[] malls = restTemplate.getForObject(url, Mall[].class); 

我需要在表单中为我的请求添加一些自定义标头:

 X-TP-DeviceID :  

在我的情况下,最简单的方法是什么? 在向服务器发送请求之前,有没有办法向我的restTemplate对象添加自定义haders定义?

[编辑]这是正确的吗?

  RestTemplate restTemplate = new RestTemplate(); restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); HttpHeaders headers = new HttpHeaders(); headers.set("X-TP-DeviceID", "1234567890"); HttpEntity entity = new HttpEntity(headers); HttpEntity response = restTemplate.exchange(url, HttpMethod.GET, entity, Mall[].class); Mall[] malls = response.getBody(); 

[补充]所以,我设法让它工作。 但是,我对此并不完全满意。 在我的情况下,我需要为我所做的所有通话提供相同的自定义标题。

所以,我的下一个问题是 – 是否可以设置我的自定义标头在每个websesrvice调用上自动添加? 例如,通过扩展RestTemplate类并将所有自定义标头放在那里。 因此,我需要的只是使用我的自定义扩展RestTemplate,而不是库存,我默认会出现所有自定义标题。

您可以使用RestTemplate交换方法传递自定义http标头,如下所示。

 HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(new MediaType[] { MediaType.APPLICATION_JSON })); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("X-TP-DeviceID", "your value"); HttpEntity entityReq = new HttpEntity(request, headers); RestTemplate template = new RestTemplate(); ResponseEntity respEntity = template .exchange("RestSvcUrl", HttpMethod.POST, entityReq, RestResponse.class); 

编辑:下面是更新的代码。 此链接有几种方法可以通过示例调用rest服务

 RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("X-TP-DeviceID", "your value"); HttpEntity entity = new HttpEntity("parameters", headers); ResponseEntity respEntity = restTemplate.exchange(url, HttpMethod.POST, entity, Mall[].class); Mall[] resp = respEntity.getBody(); 
Interesting Posts