gpt4 book ai didi

java - 将我的自定义 http header 添加到 Spring RestTemplate 请求/扩展 RestTemplate

转载 作者:IT老高 更新时间:2023-10-28 13:50:03 31 4
gpt4 key购买 nike

我当前的代码:

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

我需要为我的请求添加一些自定义 header ,格式为:

X-TP-DeviceID : <GUID>

就我而言,最简单的方法是什么?在将请求发送到服务器之前,有什么方法可以将自定义 header 定义添加到我的 restTemplate 对象?

[编辑]

对吗?

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<Mall[]> response = restTemplate.exchange(url, HttpMethod.GET, entity, Mall[].class);

Mall[] malls = response.getBody();

[添加]

所以,我设法让它工作。但是,我对此并不完全满意。就我而言,我需要为我所做的所有调用提供相同的自定义 header 。

所以,我的下一个问题是 - 是否可以将我的自定义 header 设置为在每个 web-service 调用中自动添加,例如,通过扩展 RestTemplate 类并将所有自定义标题放在那里?然后,我需要做的就是简单地使用我的自定义扩展 RestTemplate 而不是库存的,默认情况下我所有的自定义标题都将出现在那里。

最佳答案

您可以使用以下 RestTemplate 交换方法传递自定义 http header 。

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<RestRequest> entityReq = new HttpEntity<RestRequest>(request, headers);

RestTemplate template = new RestTemplate();

ResponseEntity<RestResponse> respEntity = template
.exchange("RestSvcUrl", HttpMethod.POST, entityReq, RestResponse.class);

编辑:下面是更新的代码。 This link has several ways of calling rest service with examples

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<String> entity = new HttpEntity<String>("parameters", headers);

ResponseEntity<Mall[]> respEntity = restTemplate.exchange(url, HttpMethod.POST, entity, Mall[].class);

Mall[] resp = respEntity.getBody();

关于java - 将我的自定义 http header 添加到 Spring RestTemplate 请求/扩展 RestTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623407/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com