2016-07-29 14 views
1

Ich habe Code, der funktioniert, aber es ist jetzt veraltet. Alles ist depricated außer BasicCredentialsProviderVeralteter HttpClient, jetzt mit 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); 

Ich habe versucht, es selbst zu tun. Zuerst ersetzte ich SSLSocketFactory mit

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

dann habe ich versucht

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

verwenden konnte ich meinen Anschluss nicht dort passen, so dass ich nach geraumer Zeit auf der Suche Ich bin immer noch verloren, wie man TU es. Und für den Rest habe ich noch keine Lösung. Jegliche Hilfe dazu wäre abgeflaut.

Antwort

0

Ich denke, ich habe es geschafft, es funktioniert so weit.

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());