создать HttpClient с помощью useSystemProperties () - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь создать один http-клиент, используя useSystemProperties (), так как мне нужно по умолчанию задать свойства ssl для WAS [например, чтобы получить шифры WAS во время выполнения].И я должен установить некоторые максимальные соединения и менеджер соединений также для httpclient.Это очень высокий трафик.

Я пробовал 3 способа,

httpclient = HttpClients.custom().useSystemProperties().setConnectionManager("soem value").setMaxConnPerRoute("some value").setMaxConnTotal("some value").setUserAgent("Custom Browser")
                .disableCookieManagement().build(); -- This did not set the WAS ssl properties and thus the connection got failed.


            httpclient1 = HttpClientBuilder.create().useSystemProperties().setConnectionManager(connManager).setMaxConnPerRoute(maxConnPerRoute).setMaxConnTotal(maxConnTotal).setUserAgent("Custom Browser")
            .disableCookieManagement().build();-- This did not set the WAS ssl properties and thus the connection failed.


            httpclient2 = HttpClientBuilder.create().useSystemProperties().build();-- This one defaulted to WAS ssl configurations and connection was fine but other params are missing here.

Могу ли я достичь обоих этих вариантов?

1 Ответ

0 голосов
/ 15 мая 2019

Вам необходимо переопределить SSLConnectionSocketFactory для вашего ConnectionManager, например, в приведенном ниже примере будет создано значение по умолчанию SSLConnectionSocketFactory, если вы будете использовать useSystemProperties

    DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(PublicSuffixMatcherLoader.getDefault());
    SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(
            (SSLSocketFactory) SSLSocketFactory.getDefault(), null, null, hostnameVerifier
    );

    final PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(
            RegistryBuilder.<ConnectionSocketFactory>create()
                    .register("http", PlainConnectionSocketFactory.getSocketFactory())
                    .register("https", sslConnectionSocketFactory)
                    .build()
    );

    connManager.setDefaultMaxPerRoute(20);
    connManager.setMaxTotal(20);


    final HttpClientBuilder builder = HttpClientBuilder
            .create()
            .setConnectionManager(connManager);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...