2016-07-29 7 views
1

잘 작동하지만 더 이상 사용되지 않는 코드가 있습니다. BasicCredentialsProvider더 이상 사용되지 않는 HttpClient, 현재 apache-httpclient-4.3.x 사용

SSLSocketFactory sslsf = new SSLSocketFactory("TLS", null, null, keyStore, null, new TrustSelfSignedStrategy(), 
       new AllowAllHostnameVerifier()); 
     Scheme https = new Scheme("https", 28181, sslsf); 

     SchemeRegistry schemeRegistry = new SchemeRegistry(); 
     schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory())); 
     schemeRegistry.register(https); 

     PoolingClientConnectionManager connectionManager = new PoolingClientConnectionManager(schemeRegistry); 
     connectionManager.setMaxTotal(100); 
     connectionManager.setDefaultMaxPerRoute(5); 

     DefaultHttpClient httpClient = new DefaultHttpClient(connectionManager); 

     BasicCredentialsProvider credsProvider = new BasicCredentialsProvider(); 
     credsProvider.setCredentials(new AuthScope(uri.getHost(), uri.getPort(), name), 
       new UsernamePasswordCredentials(username, password)); 

     httpClient.setCredentialsProvider(credsProvider); 
     httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 60000); 

     return new HttpContextRequestScopedApacheClientExecutor(httpClient); 

제외하고는 모두 부인할 수 있습니다. 우선 다음

SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory 
(SSLContexts.custom(). 
        loadTrustMaterial(keyStore, new TrustSelfSignedStrategy()). 
useTLS().build(), SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 

SSLSocketFactory를 대체 나는 거기에 내 포트에 맞지 않을 수

Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() .register("https", sslConnectionFactory) .build();

을 사용하려고, 그래서 나는 꽤 많은 시간 동안 검색 한 후 나는 아직도하는 방법에 대한 손실입니다 해. 그리고 나머지는 아직 해결책이 없습니다. 이것에 대한 어떤 도움도 몹시 낫습니다.

답변

0

나는 그것을 할 수 있었다고 생각한다, 지금까지 작동하고있다.

HttpClientBuilder builder = HttpClientBuilder.create(); 
    KeyStore keyStore = initSSL(); 

    SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(SSLContexts.custom().loadTrustMaterial(keyStore, new 
    TrustSelfSignedStrategy()).useTLS().build(), SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 

    Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() 
      .register("http", PlainConnectionSocketFactory.getSocketFactory()) 
      .register("https", sslConnectionFactory) 
      .build(); 

    PoolingHttpClientConnectionManager ccm = new PoolingHttpClientConnectionManager(registry); 
    ccm.setMaxTotal(100); 
    ccm.setDefaultMaxPerRoute(5); 
    builder.setConnectionManager(ccm); 

    BasicCredentialsProvider credsProvider = new BasicCredentialsProvider(); 
    credsProvider.setCredentials(new AuthScope(uri.getHost(), uri.getPort(), name), 
      new UsernamePasswordCredentials(username, password)); 

    builder.setDefaultCredentialsProvider(credsProvider); 

    RequestConfig.Builder requestBuilder = RequestConfig.custom(); 
    requestBuilder.setSocketTimeout(60000); 
    builder.setDefaultRequestConfig(requestBuilder.build()); 

    return new HttpContextRequestScopedApacheClientExecutor(builder.build());