Java ProxySelector: kurekebisha bandari za HTTP na HTTPS zilizokosekana
Rekebisha bandari za HTTP zilizoachwa kabla ya kulinganisha maeneo katika ProxySelector maalum, na weka sheria za HTTP nje ya uteuzi wa socket mbichi.
Kanuni hutuma http://reports.example:80/ kupitia proksi lakini huruhusu http://reports.example/ kwenda moja kwa moja. URL hizo zinaeleza mwisho mmoja wa kawaida wa HTTP. Tofauti mara nyingi hutokana na kulinganisha bandari zilizochanganuliwa kwa maana halisi.
URI.getPort() hurudisha -1 wakati hakuna bandari inayoonekana kwenye URI. Haibadilishi chaguo-msingi la mpango. Sera ya uelekezaji inayolinganisha thamani na 80 itaikosa URL ya pili.
String scheme = uri.getScheme();
int port = uri.getPort();
if (port == -1) {
if ("http".equalsIgnoreCase(scheme)) port = 80;
else if ("https".equalsIgnoreCase(scheme)) port = 443;
}
Tumia urekebishaji huo huo kwa pande zote za ulinganishaji. Kurekebisha URI ya ombi pekee bado kunaacha lengo lililowekwa na bandari iliyoachwa bila mechi. Linganisha mwenyeji, bandari inayofanya kazi na mpango uliokusudiwa; kataa maeneo yasiyofaa au yasiyo na mwenyeji kupitia njia ya hitilafu iliyofafanuliwa.
Usigeuze kila callback kuwa uamuzi wa HTTP
Kichaguzi chaguo-msingi kinaweza pia kuulizwa kuhusu miunganisho ya socket mbichi, kwa kutumia mpango socket. Ulinganifu wa mwenyeji na bandari pekee haupaswi kufanya callback hiyo irudishe proksi ya HTTP iliyokusudiwa kwa maombi ya URL. Kabidhi mipango isiyoungwa mkono kwa kichaguzi kilichotangulia, ukihifadhi tabia yake inayofaa.
Nasa kichaguzi hicho kilichotangulia kabla ya kuweka chako. Kutafuta chaguo-msingi la sasa kutoka ndani ya kibadala kunaweza tu kuita kibadala tena.
Andika mpango, mwenyeji, bandari asili na bandari inayofanya kazi unapochunguza tofauti. Usitegemee nambari moja iliyozingatiwa au mpangilio wa callback katika utekelezaji wa JDK. Sera inapaswa kufanya uamuzi sahihi kwa kila URI iliyotolewa.