Java ProxySelector: ធ្វើឱ្យច្រក HTTP និង HTTPS ដែលបាត់មានលក្ខណៈធម្មតា
ធ្វើឱ្យច្រក HTTP ដែលត្រូវបានលុបមានលក្ខណៈធម្មតា មុនពេលប្រៀបធៀបគោលដៅក្នុង ProxySelector ផ្ទាល់ខ្លួន ហើយរក្សាច្បាប់ HTTP ឱ្យនៅក្រៅការជ្រើសរើស socket ដើម។
ច្បាប់មួយផ្ញើ http://reports.example:80/ តាមរយៈ proxy ប៉ុន្តែអនុញ្ញាតឱ្យ http://reports.example/ ទៅដោយផ្ទាល់។ URL ទាំងនោះពិពណ៌នាអំពីចំណុចបញ្ចប់ HTTP ធម្មតាដូចគ្នា។ ភាពមិនត្រូវគ្នាជាធម្មតាកើតចេញពីការប្រៀបធៀបច្រកដែលបានញែកដោយតួអក្សរត្រង់។
URI.getPort() ត្រឡប់ -1 នៅពេលគ្មានច្រកនៅក្នុង URI។ វាមិនជំនួសតម្លៃលំនាំដើមសម្រាប់គ្រោងការណ៍ទេ។ គោលនយោបាយផ្លូវដែលប្រៀបធៀបតម្លៃជាមួយ 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 សំណើនៅតែបន្សល់គោលដៅដែលបានកំណត់រួចដែលមានច្រកត្រូវបានលុបដោយគ្មានការត្រូវគ្នា។ ប្រៀបធៀប host ច្រកដែលមានប្រសិទ្ធភាព និងគ្រោងការណ៍ដែលចង់បាន; បដិសេធគោលដៅដែលខូច ឬគ្មាន host តាមផ្លូវកំហុសដែលបានកំណត់។
កុំបំប្លែង callback នីមួយៗទៅជាការសម្រេចចិត្ត HTTP
អ្នកជ្រើសរើសលំនាំដើមអាចត្រូវបានសាកសួរសម្រាប់ការតភ្ជាប់ socket ដើមផងដែរ ដោយប្រើគ្រោងការណ៍ socket។ ការត្រូវគ្នាតែ host និងច្រកមិនត្រូវធ្វើឱ្យ callback នោះត្រឡប់ proxy HTTP ដែលមានបំណងសម្រាប់សំណើ URL នោះទេ។ ប្រគល់គ្រោងការណ៍ដែលមិនគាំទ្រទៅអ្នកជ្រើសរើសមុន ដោយរក្សាអាកប្បកិរិយាសមស្របរបស់វា។
ចាប់យកអ្នកជ្រើសរើសមុននោះ មុនពេលដំឡើងរបស់អ្នក។ ការស្វែងរកលំនាំដើមបច្ចុប្បន្នពីខាងក្នុងអ្នកជំនួសអាចគ្រាន់តែហៅអ្នកជំនួសម្តងទៀត។
កត់ត្រាគ្រោងការណ៍ host ច្រកដើម និងច្រកដែលមានប្រសិទ្ធភាព នៅពេលធ្វើរោគវិនិច្ឆ័យភាពមិនត្រូវគ្នា។ កុំពឹងផ្អែកលើលេខមួយដែលបានសង្កេត ឬលំដាប់ callback ឆ្លងកាត់ការអនុវត្ត JDK។ គោលនយោបាយគួរធ្វើការសម្រេចចិត្តត្រឹមត្រូវសម្រាប់ URI នីមួយៗដែលបានផ្តល់។