HttpClient 4 പ്രോക്സി പിശക്: http പ്രോട്ടോക്കോൾ പിന്തുണയ്ക്കുന്നില്ല
HTTPS പാത ആദ്യം HTTP പ്രോക്സിയിലേക്ക് കണക്ട് ചെയ്യുമ്പോൾ സാധാരണ HTTP ഫാക്ടറി കസ്റ്റം Apache HttpClient 4 രജിസ്ട്രിയിൽ നിലനിർത്തുക.
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-ന്റെ ഉടമസ്ഥതയും പരിശോധിക്കുക: വ്യക്തമായി നൽകിയ കണക്ഷൻ മാനേജർക്ക് അതിന്റെ വേറിട്ട SSL കോൺഫിഗറേഷൻ ഇൻപുട്ടുകളെ മറികടക്കാമെന്ന് HttpClientBuilder രേഖപ്പെടുത്തുന്നു. ആവശ്യമായ ഫാക്ടറികൾ മാനേജറുടെ രജിസ്ട്രിയിൽ വയ്ക്കുക, പിന്നീടുള്ള setSSLContext വിളി അതിന്റെ ഉൾഭാഗം മാറ്റുമെന്ന് കരുതുന്നതിനുപകരം.
ഈ രോഗനിർണയം പ്രാദേശിക സ്കീം രജിസ്ട്രിയെക്കുറിച്ചാണ്. പ്രോക്സി പ്രാമാണീകരണ വെല്ലുവിളിയോ നിരസിക്കപ്പെട്ട ലക്ഷ്യസ്ഥാനമോ പിന്നീടുള്ള, വ്യത്യസ്ത ഫലമാണ്. ആ പ്രതികരണങ്ങൾ അന്വേഷിക്കുമ്പോൾ രണ്ട് ഫാക്ടറി രജിസ്ട്രേഷനുകളും നിലനിർത്തുക.