RestTemplate通过HeaderRequestInterceptor拦截器统一添加token
@Component
public class HeaderRequestInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] body, ClientHttpRequestExecution clientHttpRequestExecution) throws IOException {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
String auth = request.getHeader("Authorization");
String accessToken = request.getParameter("access_token");
List authorizations = httpRequest.getHeaders().get("Authorization");
String authorization = "";
if (accessToken != null) {
authorization = "bearer " + accessToken;
} else if (auth != null) {
authorization = auth;
} else if (authorizations != null) {
authorization = "bearer " + authorizations.get(0);
}
HttpHeaders headers = httpRequest.getHeaders();
headers.add("Authorization", authorization);
return clientHttpRequestExecution.execute(httpRequest, body);
}
}
@Bean("restTemplate")
@LoadBalanced
public RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate(createFactory());
List> converterList = restTemplate.getMessageConverters();
// 重新设置StringHttpMessageConverter字符集为UTF-8,解决中文乱码问题
HttpMessageConverter> converterTarget = null;
for (HttpMessageConverter> item : converterList) {
if (StringHttpMessageConverter.class == item.getClass()) {
converterTarget = item;
break;
}
}
if (null != converterTarget) {
converterList.remove(converterTarget);
}
converterList.add(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
**//拦截器统一添加token**
restTemplate.setInterceptors(Collections.singletonList(headerRequestInterceptor));
return restTemplate;
}



