Rest 重新模板无法设置常规基本身份验证标头
有一个基本的身份验证端点,我需要使用Resttemplate来执行不同的http方法 但是,使用以下解决方案,它可以工作:Rest 重新模板无法设置常规基本身份验证标头,rest,spring-security,resttemplate,Rest,Spring Security,Resttemplate,有一个基本的身份验证端点,我需要使用Resttemplate来执行不同的http方法 但是,使用以下解决方案,它可以工作: public CommonResult createSubscription(final SubscriptionDTO subscriptionDTO) { String authStr = "operator:pass"; String base64Creds = Base64.getEncoder().encodeToString(
public CommonResult createSubscription(final SubscriptionDTO subscriptionDTO) {
String authStr = "operator:pass";
String base64Creds = Base64.getEncoder().encodeToString(authStr.getBytes());
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);
HttpEntity request = new HttpEntity(subscriptionDTO, headers);
ResponseEntity<CommonResult> responseEntity = restTemplate.exchange(subscripURL + URL_PATH, HttpMethod.POST, request, CommonResult.class);
return responseEntity.getBody();
}
public RestTemplate restTemplate(@Value("${custom.timeout}") int timeOut, @Value("custom.restacc") String account, @Value("custom.restpwd") String password) {
final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setConnectTimeout(timeOut);
requestFactory.setReadTimeout(timeOut);
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(requestFactory);
restTemplate.getInterceptors().add(new CustomBasicAuthInterceptor(account, password));
return restTemplate;
}
public class CustomBasicAuthInterceptor implements ClientHttpRequestInterceptor {
private final String username;
private final String password;
public CustomBasicAuthInterceptor(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
String authStr = username + ":" + password;
String base64Creds = Base64.getEncoder().encodeToString(authStr.getBytes());
HttpHeaders headers = request.getHeaders();
//headers.add("Authorization", "Basic " + base64Creds);
headers.set("Authorization", "Basic " + base64Creds);
return execution.execute(request, body);
}
}