@Component
public class RestTemplateInterceptor implements ClientHttpRequestInterceptor {
private final Log log = LogFactory.getLog(this.getClass());
private Gson gson = new GsonBuilder().serializeNulls().create();
@Autowired
EpTokenUtil epTokenUtil;
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
log.info("调用request" + request.getURI() + "header" + request.getHeaders());
String s = request.getURI().toString();
if (s != null) {
return execution.execute(request, body);
}
String mobile = "";
HttpHeaders headers = request.getHeaders();
List<String> mobiles = headers.get("mobile");
if (mobiles != null && mobiles.size() > 0) {
mobile = mobiles.get(0);
}
ServerResponse<Map<String, String>> newToken = null;
if (StringUtils.isNotBlank(mobile)) {
try {
newToken =getToken;
} catch (Exception e) {
e.printStackTrace();
}
if (newToken != null && newToken.getCode() == 1) {
headers.remove("token");
headers.add("token", newToken.getData().get("token"));
headers.add("label", newToken.getData().get("label"));
headers.add("User-Agent","Chrome/69.0.3497.81 Safari/537.36");
}
}
return execution.execute(request, body);
}
}
@Autowired
private RestTemplateInterceptor restTemplateInterceptor;
@Bean
public RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate(httpRequestFactory());
/* restTemplate.setErrorHandler(new DefaultResponseErrorHandler() {
@Override
public void handleError(ClientHttpResponse response) throws IOException {
if (response.getRawStatusCode() != HttpStatus.UNAUTHORIZED.value()) {
super.handleError(response);
}
}
});*/
restTemplate.getInterceptors().add(restTemplateInterceptor);
return restTemplate;
}