HttpClient是否同时配置了SSL和代理身份验证?

问题描述 投票:1回答:1

我有两个使用HttpClient的代码,如果端点需要SSL,则为第一部分第二是具有基本身份验证的代理连接我的问题是如何使此代码成为条件代码,以便在我只有SSL +代理或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();
         }

所以最重要的是如何使两个部分一起工作,以防万一

  1. 使用SSL +代理和身份验证进行呼叫
  2. 仅使用SSL通话
  3. 仅使用代理和身份验证进行呼叫

我有使用HttpClient的两段代码,第一部分是在端点需要SSL的情况下,第二部分是具有基本身份验证的代理连接。我的问题是如何使该代码成为条件……

apache-commons-httpclient
1个回答
0
投票
您可以通过这种方式编写代码来解决多个问题:
© www.soinside.com 2019 - 2024. All rights reserved.