JDK 25 HttpClient သည် ProxySelector ၏ SOCKS လမ်းကြောင်းများကို အသုံးမပြုပါ
ProxySelector ပြန်ပေးသော အမျိုးအစားကိုသာ မှီခိုမည့်အစား SOCKS ကို အမှန်တကယ် ပံ့ပိုးသော Java HTTP သယ်ယူမှုကို ရွေးပါ။
Java ပရောက်စီအရာဝတ္ထုသည် လမ်းကြောင်းတစ်ခုကို ဖော်ပြသည်။ မည်သည့် လမ်းကြောင်းအမျိုးအစားများကို အသုံးပြုနိုင်သည်ကို ကွန်ရက် client က ဆုံးဖြတ်နေဆဲဖြစ်သည်။ ရရှိနိုင်သော endpoint က SOCKS ပြောပြီး အက်ပ်က java.net.http.HttpClient ကို အသုံးပြုသောအခါ ဤအချက်က အရေးကြီးသည်။
ဤနေရာတွင် စစ်ဆေးသော JDK 25 အကောင်အထည်ဖော်မှုတွင် HTTP client ၏ တောင်းဆိုမှုကုဒ်သည် ရွေးချယ်ကိရိယာမှ HTTP အလောင်းအလျာကို လက်ခံသည်။ SOCKS အလောင်းအလျာက ၎င်းအား SOCKS ညှိနှိုင်းမှု ပြုလုပ်ရန် မဖန်တီးပါ။ အကောင်အထည်ဖော်မှုသည် ပရောက်စီမပါဘဲ ဆက်လုပ်နိုင်သည်။ ထို့ကြောင့် အောင်မြင်သော တုံ့ပြန်မှုသည် စိတ်ကြိုက် ရွေးချယ်ကိရိယာ၏ SOCKS အချက်အလက် အသုံးပြုခဲ့သည်ဟု လုံလောက်သော အထောက်အထား မဟုတ်ပါ။
သယ်ယူမှုကို ဦးစွာရွေးပါ
URLConnection အခြေခံ လက်ရှိအက်ပ်အတွက် ချိတ်ဆက်မှုဖွင့်သည့်အခါ ပရိုတိုကော ကိုင်တွယ်သူအား ပံ့ပိုးထားသော တိကျသည့် ပရောက်စီကို ပေးနိုင်သည်:
Proxy route = new Proxy(Proxy.Type.SOCKS,
new InetSocketAddress("proxy.example", 1080));
URLConnection connection = URI.create("https://service.example/")
.toURL().openConnection(route);
connection.setConnectTimeout(5000);
connection.setReadTimeout(15000);
ခွင့်ပြုထားသော အများသူငှာ ပစ်မှတ် စမ်းသပ်မှုများအတွက် သင်၏ ဝန်ဆောင်မှု သို့မဟုတ် SOCKS ပရောက်စီစာရင်း မှ ကိုက်ညီသော SOCKS endpoint ကို အသုံးပြုပါ။ ဤသည် မတူညီသော client API ဖြစ်ပြီး HttpClient.Builder.proxy ၏ အစားထိုး စာလုံးပေါင်းခြင်း မဟုတ်ပါ။ HTTPS က ရည်ရွယ်ထားသော ဝဘ်ဆိုက်ကို ဆက်လက်ဖော်ထုတ်နိုင်ရန် ဦးတည်ရာ URL ကို ထိန်းသိမ်းပါ။
java.net.http ကို ထိန်းသိမ်းရမည့် အက်ပ်သည် အစား သဟဇာတဖြစ်သော HTTP ပရောက်စီ endpoint ကို အသုံးပြုနိုင်သည်၊ နောက်ဆက် SOCKS ချိတ်ဆက်မှုကို ကိုင်တွယ်သော အတည်ပြုထားသည့် အဒက်ပ်တာ အပါအဝင်။ ယင်းက စစ်မှန်သော အစိတ်အပိုင်းနှင့် နောက်ထပ် ဝင်ရောက်ခွင့် နယ်နိမိတ်ကို ထည့်သည်။ ပို့ 8080 ကို 1080 သို့ ပြောင်းခြင်းသည် ထို ဘာသာပြန်ကို မပေးပါ။
ရွေးချယ်မှုနှင့် လက်ခံမှုကို မြင်သာအောင်ထားပါ
ရွေးချယ်ကိရိယာ၏ ရလဒ်နှင့် client အမှန်တကယ်ဖွင့်သော ချိတ်ဆက်မှု နှစ်ခုလုံးကို မှတ်တမ်းတင်ပါ။ ပထမတစ်ခုက မူဝါဒ ထွက်ရှိမှုကို ဖော်ပြသည်။ ဒုတိယတစ်ခုက အကောင်အထည်ဖော်မှုက ၎င်းကို လက်ခံခဲ့ခြင်း ရှိ/မရှိ သတ်မှတ်သည်။
နိဂုံးချုပ်ချက်များကို အသုံးပြုနေသော runtime နှင့် သယ်ယူမှုတွင် ချိတ်ဆက်ပါ။ socket အကောင်အထည်ဖော်မှုတစ်ခု အသုံးပြုသော JVM SOCKS ဂုဏ်သတ္တိများသည် HTTP စာကြည့်တိုက်တိုင်း ၎င်းတို့ကို မေးမြန်းမည်ဟု ကတိမဟုတ်ပါ။ လမ်းကြောင်း မဖြစ်မနေ လိုအပ်သောအခါ ပုံပေါ်အားဖြင့် အောင်မြင်သော တိုက်ရိုက်တောင်းဆိုမှုကို လက်ခံမည့်အရှေ့တွင် ပံ့ပိုးမထားသော ပရောက်စီအမျိုးအစားကို ရှာဖွေသင့်သည်။