Java ProxySelector: يوق HTTP ۋە HTTPS پورتىنى نورماللاشتۇرۇش
ئۆزگەرتىلگەن ProxySelector ئىچىدە نىشانلارنى سېلىشتۇرۇشتىن بۇرۇن قالدۇرۇپ كەتكەن HTTP پورتلىرىنى نورماللاشتۇرۇڭ، HTTP قائىدىلىرىنى خام socket تاللاشتىن سىرتقا چىقىرىڭ.
بىر قائىدە http://reports.example:80/ نى proxy ئارقىلىق ئەۋەتىدۇ، ئەمما http://reports.example/ نىڭ بىۋاسىتە ئۆتۈشىگە يول قويىدۇ. بۇ ئىككى URL ئوخشاش ئادەتتىكى HTTP ئاخىرقى نۇقتىنى تەسۋىرلەيدۇ. ماسلاشماسلىق ئادەتتە ئۇلارنىڭ تەھلىل قىلىنغان پورتلىرىنى لۇغەت مەنىسىدە سېلىشتۇرۇشتىن كېلىدۇ.
URI.getPort() URI دىن پورت كۆرۈنمىسە -1 نى قايتۇرىدۇ. ئۇ سىخېمىنىڭ سۈكۈتتىكى قىممىتىنى ئالماشتۇرمايدۇ. قىممەتنى 80 بىلەن سېلىشتۇرىدىغان يول باشلاش سىياسىتى ئىككىنچى URL نى ئۆتكۈزۈپ يۇبەرىدۇ.
String scheme = uri.getScheme();
int port = uri.getPort();
if (port == -1) {
if ("http".equalsIgnoreCase(scheme)) port = 80;
else if ("https".equalsIgnoreCase(scheme)) port = 443;
}
ئوخشاش نورماللاشتۇرۇشنى سېلىشتۇرۇشنىڭ ئىككى تەرىپىگە قوللىنىڭ. پەقەت تەلەپ URI نى تۈزەتسىلا، پورتى قالدۇرۇلغان سەپلەنگەن نىشان يەنىلا ماسلاشماي قالىدۇ. ساھىب، ئۈنۈملۈك پورت ۋە مەقسەت قىلىنغان سىخېمىنى سېلىشتۇرۇڭ؛ خاتا ياكى ساھىبسىز نىشانلارنى بەلگىلەنگەن خاتالىق يولى ئارقىلىق رەت قىلىڭ.
ھەر بىر callback نى HTTP قارارىغا ئايلاندۇرماڭ
سۈكۈتتىكى تاللىغۇچتىن خام socket ئۇلىنىشلىرى ئۈچۈنمۇ socket سىخېمىسى بىلەن سوراشقا بولىدۇ. پەقەت ساھىب ۋە پورت ماسلىشىشىلا بۇ callback نىڭ URL تەلەپلىرى ئۈچۈن مەقسەت قىلىنغان HTTP proxy نى قايتۇرۇشىغا سەۋەب بولماسلىقى كېرەك. قوللانمايدىغان سىخېمىلارنى ئالدىنقى تاللىغۇچقا تاپشۇرۇڭ، ئۇنىڭ مۇۋاپىق قىلمىشىنى ساقلاڭ.
ئۆزىڭىزنىڭكىنى قاچىلاشتىن بۇرۇن ئۇ ئالدىنقى تاللىغۇچنى تۇتۇڭ. ئالماشتۇرغۇچنىڭ ئىچىدىن نۆۋەتتىكى سۈكۈتتىكىنى ئىزدەش ئالماشتۇرغۇچنى قايتا چاقىرىشى مۇمكىن.
ماسلاشماسلىقنى دىئاگنوز قىلغاندا سىخېما، ساھىب، ئەسلى پورت ۋە ئۈنۈملۈك پورتتىن خاتىرە قالدۇرۇڭ. JDK ئەمەلگە ئاشۇرۇشلىرى ئارىسىدا كۆزەتكەن بىر سانغا ياكى callback تەرتىپىگە تايانماڭ. سىياسەت ھەر بىر بېرىلگەن URI ئۈچۈن توغرا قارار چىقىرىشى كېرەك.