Gabim proxyje në HttpClient 4: protokolli http nuk mbështetet
Mbajeni fabrikën e thjeshtë HTTP në një regjistër Apache HttpClient 4 të personalizuar kur një rrugë HTTPS lidhet së pari me një proxy HTTP.
Në një aplikacion Apache HttpClient 4, një destinacion HTTPS nuk do të thotë se çdo lidhje fillon me TLS. Një proxy HTTP i zakonshëm arrihet përmes një lidhjeje të pafshehëzuar përpara se CONNECT të hapë tunelin dhe TLS të shtresohet drejt destinacionit.
Nëse një menaxher lidhjesh i personalizuar regjistron vetëm https, kërcimi i parë përmes proxy-t mund të dështojë me UnsupportedSchemeException: http protocol is not supported.
Për API 4.5, përfshini të dyja fabrikat kur ndërtoni atë menaxher:
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 është SSLConnectionSocketFactory ekzistues i aplikacionit, me verifikimin e synuar të besimit dhe emrit të hostit. Tipet e paraqitura i përkasin paketave org.apache.http të Apache 4. Fragmenti supozon nxjerrjen e tipit të variablave lokale në Java; kodi Java më i vjetër mund të përdorë tipe eksplicite.
Lidhni menaxherin e korrigjuar me klientin që përdoret vërtet për kërkesën. Për një kërkesë HTTPS publike të lejuar pa autentikim proxy, një zë HTTP nga lista e proxy-ve HTTP mund të plotësojë adresën e proxy-t të HttpHost. Konfigurimi i një builder tjetër nuk përditëson një klient të ndërtuar më parë.
Kontrolloni gjithashtu pronësinë e builder-it: HttpClientBuilder dokumenton se një menaxher lidhjesh i dhënë në mënyrë eksplicite mund të anashkalojë hyrjet e tij të veçanta të konfigurimit SSL. Vendosni fabrikat e nevojshme në regjistrin e menaxherit në vend që të supozoni se një thirrje e mëvonshme setSSLContext do të zëvendësojë brendësinë e tij.
Ky diagnozë ka të bëjë me regjistrin lokal të skemave. Një sfidë autentikimi proxy ose një destinacion i refuzuar është një rezultat i mëvonshëm dhe i ndryshëm. Ruani të dyja regjistrimet e fabrikave ndërsa hetoni ato përgjigje.