У меня есть два фрагмента кода с использованием HttpClient,
Первая часть на случай, если конечная точка требует SSL
Вторая - прокси-соединение с базой c аутентификация
Мой вопрос: как я могу сделать этот код условно, поэтому в тех случаях, когда у меня есть SSL + Proxy или только SSL, мне трудно понять, как установить учетные данные по умолчанию, например, после того, как я создал клиента, используя клиент в части SSL
.setDefaultCredentialsProvider(credsProvider)
Эта часть как я создаю клиента, когда мне нужен SSL
CloseableHttpClient client = null;
if(conf.isUseSslConfig()) {
SSLContext sslcontext = SSLContexts.custom()
.loadTrustMaterial(new File(conf.getTrustStoreLocation()), conf.getTrustStorePassword().toCharArray(), new TrustSelfSignedStrategy()).build();
// Allow protocols
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,conf.getTlsVersions(), null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
client = HttpClients.custom().setSSLSocketFactory(sslsf).build();
}else {
client= HttpClients.createDefault();
}
И в этой части я создаю клиента, когда мне нужна проверка подлинности прокси:
if(conf.isUseProxyConfig()){
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope("fakeProxy.xerox.com", 80),
new UsernamePasswordCredentials("xeroxUser","fakePassword123"));
HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider).build();
}
Итак, суть в том, как сделать два раздела работают вместе, поэтому в случае
- Звонок с SSL + прокси и аутентификация
- Звонок только с SSL
- Звонок только с прокси и аутентификацией