JDK 25 HttpClient-ը չի օգտագործում ProxySelector-ի SOCKS երթուղիները
Ընտրեք Java HTTP տրանսպորտ, որն իրոք աջակցում է SOCKS-ին, փոխարենը միայն ProxySelector-ի վերադարձրած տեսակին ապավինելու։
Java-ի proxy օբյեկտը նկարագրում է երթուղի։ Ցանցային հաճախորդը դեռ ինքն է որոշում, թե երթուղիների որ տեսակները կարող է օգտագործել։ Սա կարևոր է, երբ հասանելի վերջնակետը խոսում է SOCKS, իսկ հավելվածը օգտագործում է java.net.http.HttpClient։
Այստեղ դիտարկվող JDK 25 իրականացման մեջ HTTP հաճախորդի հարցման կոդը ընդունում է HTTP թեկնածու ընտրիչից։ SOCKS թեկնածուն ստիպող չէ, որ այն կատարի SOCKS բանակցություն. իրականացումը կարող է շարունակել առանց proxy-ի։ Հետևաբար հաջող պատասխանը բավարար ապացույց չէ, որ օգտագործվել է հատուկ ընտրիչի SOCKS գրառումը։
Նախ ընտրեք տրանսպորտը
URLConnection-ի վրա հիմնված գոյություն ունեցող հավելվածի համար կապը բացելիս արձանագրության մշակիչին կարելի է տալ աջակցվող բացահայտ proxy.
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 proxy ցանկից։ Սա այլ հաճախորդային API է, ոչ թե HttpClient.Builder.proxy-ի այլընտրանքային գրելաձև։ Պահպանեք նպատակակետ URL-ը, որպեսզի HTTPS-ը շարունակի ճանաչել նախատեսված կայքը։
Հավելվածը, որը պետք է պահպանի java.net.http-ը, կարող է փոխարենը օգտագործել համատեղելի HTTP proxy վերջնակետ, ներառյալ հաստատված ադապտեր, որը զբաղվում է հետագա SOCKS կապով։ Դա ավելացնում է իրական բաղադրիչ և ևս մեկ հասանելիության սահման. 8080 պորտը 1080-ով փոխելը այդ թարգմանությունը չի տալիս։
Ընտրությունը և որդեգրումը պահեք տեսանելի
Գրանցեք և՛ ընտրիչի արդյունքը, և՛ այն կապը, որը հաճախորդն իրականում բացում է։ Առաջինը նկարագրում է քաղաքականության արդյունքը, երկրորդը հաստատում է՝ իրականացումը որդեգրե՞լ է այն։
Եզրակացությունները կապեք օգտագործվող գործարկման միջավայրին և տրանսպորտին։ Մեկ socket իրականացման կողմից օգտագործվող JVM SOCKS հատկությունները խոստում չեն, որ յուրաքանչյուր HTTP գրադարան դիմում է նրանց։ Երբ երթուղին պարտադիր է, չաջակցվող proxy տեսակը պետք է հայտնաբերվի մինչև թվացյալ հաջող ուղիղ հարցման ընդունումը։