Apache HttpClient 4 колдонмосунда HTTPS багыты ар бир байланыш TLS менен башталат дегенди билдирбейт. Кадимки HTTP проксиге шифрленбеген байланыш аркылуу жетишет, андан кийин CONNECT туннелди ачат жана TLS багытка карай катмарланат.

Эгер ыңгайлаштырылган байланыш менеджери https гана каттаса, прокси аркылуу биринчи секирүү UnsupportedSchemeException: http protocol is not supported катасы менен ийгиликсиз болушу мүмкүн.

4.5 API үчүн ошол менеджерди курууда эки фабриканы тең кошуңуз:

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

var manager = new PoolingHttpClientConnectionManager(registry);
var client = HttpClients.custom()
    .setConnectionManager(manager)
    .setProxy(new HttpHost("proxy.example.net", 8080, "http"))
    .build();

tlsFactory — колдонмонун учурдагы SSLConnectionSocketFactory, анын көздөлгөн ишеним жана хост атын текшерүүсү менен. Көрсөтүлгөн типтер Apache 4түн org.apache.http пакеттерине таандык. Бул үзүндү Javaнын жергиликтүү өзгөрмө типтерин чыгарууну болжолдойт; эски Java коду ачык типтерди колдоно алат.

Оңдолгон менеджерди сурам үчүн чындап колдонулган клиентке тиркеңиз. Прокси аутентификациясыз уруксат берилген коомдук HTTPS сурамы үчүн HTTP прокси тизмесинен HTTP жазуусу HttpHostтун прокси дарегин толтура алат. Башка builder конфигурациялоо мурун курулган клиентти жаңыртпайт.

Builder ээлигин да текшериңиз: HttpClientBuilder ачык берилген байланыш менеджери анын өзүнчө SSL конфигурация киргизүүлөрүнөн ашып кетиши мүмкүн экенин документтейт. Керектүү фабрикаларды менеджердин реестрине салыңыз, кийинки setSSLContext чакыруусу анын ички бөлүгүн алмаштырат деп ойлоонун ордуна.

Бул диагностика жергиликтүү схема реестрине тиешелүү. Прокси аутентификация чакырыгы же четке кагылган багыт — кийинки, башка натыйжа. Ошол жоопторду изилдеп жатканда эки фабрика каттоосун тең сактаңыз.

Тектеш макалалар