Памылка проксі ў HttpClient 4: пратакол http не падтрымліваецца
Захоўвайце звычайную HTTP-фабрыку ва ўласным рэестры Apache HttpClient 4, калі HTTPS-маршрут спачатку звяртаецца да HTTP-проксі.
У праграме на Apache HttpClient 4 HTTPS-прызначэнне не азначае, што кожнае злучэнне пачынаецца з TLS. Да звычайнага HTTP-проксі даходзяць праз незашыфраванае злучэнне, перш чым CONNECT адкрые тунель і TLS будзе накладзены ў бок прызначэння.
Калі ўласны менеджар злучэнняў рэгіструе толькі https, першы крок праз проксі можа скончыцца памылкай UnsupportedSchemeException: http protocol is not supported.
Для API 4.5 пры стварэнні гэтага менеджара ўключыце абедзве фабрыкі:
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 праграмы з яе мэтавай праверкай даверу і імені хоста. Паказаныя тыпы належаць пакетам org.apache.http Apache 4. Фрагмент разлічвае на вывад тыпаў лакальных зменных Java; старэйшы код Java можа выкарыстоўваць яўныя тыпы.
Далучыце выпраўлены менеджар да кліента, які фактычна выкарыстоўваецца для запыту. Для дазволенага публічнага HTTPS-запыту без аўтэнтыфікацыі проксі HTTP-запіс са спісу HTTP-проксі можа запоўніць адрас проксі ў HttpHost. Наладка іншага будаўніка не абнаўляе ўжо створаны кліент.
Таксама праверце ўласнасць будаўніка: HttpClientBuilder дакументуе, што яўна перададзены менеджар злучэнняў можа перакрыць яго асобныя ўваходы канфігурацыі SSL. Змяшчайце патрэбныя фабрыкі ў рэестр менеджара, замест таго каб меркаваць, што пазнейшы выклік setSSLContext заменіць яго ўнутранасці.
Гэта дыягностыка датычыцца лакальнага рэестра схем. Запыт аўтэнтыфікацыі проксі або адхіленае прызначэнне — гэта пазнейшы, іншы вынік. Захоўвайце абедзве рэгістрацыі фабрык, пакуль даследуеце гэтыя адказы.