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 نىڭ ئىگىلىكىنىمۇ تەكشۈرۈڭ: HttpClientBuilder ئېنىق بېرىلگەن ئۇلىنىش باشقۇرغۇچىنىڭ ئۇنىڭ ئايرىم SSL سەپلىمە كىرگۈزمىسىنى ئېشىپ كېتەلەيدىغانلىقىنى خاتىرىلەيدۇ. كېرەكلىك زاۋۇتلارنى باشقۇرغۇچىنىڭ تىزىملىكىگە قويۇڭ، كېيىنكى setSSLContext چاقىرىقى ئۇنىڭ ئىچكى قىسمىنى ئالماشتۇرىدۇ دەپ پەرەز قىلماڭ.
بۇ دىئاگنوز يەرلىك سىخېما تىزىملىكىگە مۇناسىۋەتلىك. ۋاكالەتچى دەلىللەش سىناقى ياكى رەت قىلىنغان مەنزىل كېيىنكى، باشقا نەتىجە. بۇ جاۋابلارنى تەكشۈرگەندە ئىككى زاۋۇت تىزىملىكىنى ساقلاڭ.