Ja. Konfigurieren Sie Ihre RestTemplate
mit einer ClientHttpRequestFactory
, die das tut, was Sie brauchen.
Sie können es einfach im Konstruktor gesetzt:
restTemplate = new RestTemplate(requestFactory);
... oder Sie können all diese Dinge Bohnen machen und Federdraht es zulassen.
könnten Sie SimpleClientHttpRequestFactory
erweitern, zwingende createRequest()
:
public class BasicAuthSimpleClientHttpRequestFactory
extends SimpleClientHttpRequestFactory {
@Override
public HttpClientRequest createRequest(URI uri, HttpMethod httpMethod) {
HttpClientRequest request = super.createRequest(uri, httpMethod);
HttpHeaders headers = request.getHeaders();
headers.add(... your auth header ...);
return request;
}
}
... oder Sie könnten in Apache Httpcomponents als Abhängigkeit bringen und eine HttpComponentsClientHttpRequestFactory
verwenden, und konfigurieren Sie die zugrundeliegende Apache HttpClient
die Authentifizierung Sie tun müssen. Apache documents this in detail, aber für den Anfang:
BasicCredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("user", "password"));
HttpClient client = HttpClientBuilder.create()
.setDefaultCredentialsProvider(credentialsProvider)
.build();
RestTemplate restTemplate = new RestTemplate(
new HttpComponentsClientHttpRequestFactory(client));
Nach meiner Erfahrung ist es wert in Apache bringen Httpcomponents, wenn Sie können - es ist zuverlässiger und konfigurierbar ist als der HttpUrlConnection
basierte HTTP-Client, dass RestTemplate
sonst standardmäßig verwendet. Wenn sich Ihre Anforderungen auf andere Authentifizierungsmethoden, Timeouts, Wiederholungsstrategien usw. ausweiten, werden Sie froh sein, dass Sie eine HttpClient
konfigurieren können.