Nid yw JDK 25 HttpClient yn defnyddio llwybrau SOCKS ProxySelector
Dewiswch gludiant HTTP Java sy'n cefnogi SOCKS mewn gwirionedd yn lle dibynnu'n unig ar y math a ddychwelir gan ProxySelector.
Mae gwrthrych proxy Java yn disgrifio llwybr. Mae'r cleient rhwydwaith yn dal i benderfynu pa fathau o lwybrau y gall eu defnyddio. Mae hyn yn bwysig pan fo'r pwynt terfyn sydd ar gael yn siarad SOCKS ac mae'r rhaglen yn defnyddio java.net.http.HttpClient.
Yn y gweithrediad JDK 25 a archwilir yma, mae cod cais y cleient HTTP yn derbyn ymgeisydd HTTP gan y detholydd. Nid yw ymgeisydd SOCKS yn ei wneud i gynnal trafod SOCKS; gall y gweithrediad barhau heb proxy. Felly nid yw ymateb llwyddiannus yn ddigon o brawf bod cofnod SOCKS detholydd wedi'i ddefnyddio.
Dewiswch y cludiant yn gyntaf
Ar gyfer rhaglen bresennol sy'n seiliedig ar URLConnection, gellir rhoi proxy penodol a gefnogir i'r triniwr protocol wrth agor y cysylltiad:
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);
Ar gyfer profion cyhoeddus a ganiateir, defnyddiwch bwynt terfyn SOCKS cyfatebol o'ch gwasanaeth neu o'r rhestr proxy SOCKS. Mae hwn yn API cleient gwahanol, nid sillafiad arall o HttpClient.Builder.proxy. Cadwch URL y cyrchfan fel bod HTTPS yn parhau i adnabod y wefan fwriadedig.
Gall rhaglen sy'n rhaid cadw java.net.http ddefnyddio pwynt terfyn proxy HTTP cydnaws yn lle hynny, gan gynnwys addasydd a gymeradwywyd sy'n trin y cysylltiad SOCKS dilynol. Mae hynny'n ychwanegu cydran wirioneddol a ffin fynediad arall; nid yw newid porth 8080 i 1080 yn darparu'r cyfieithiad hwnnw.
Cadwch y dewis a'r mabwysiadu yn weladwy
Cofnodwch ganlyniad y detholydd a'r cysylltiad y mae'r cleient yn ei agor mewn gwirionedd. Mae'r cyntaf yn disgrifio allbwn polisi; mae'r ail yn sefydlu a fabwysiadodd y gweithrediad ef.
Cysylltwch gasgliadau â'r amgylchedd rhedeg a'r cludiant a ddefnyddir. Nid yw priodweddau SOCKS JVM a ddefnyddir gan un gweithrediad soced yn addewid bod pob llyfrgell HTTP yn ymgynghori â hwy. Pan fo'r llwybr yn orfodol, dylid canfod math proxy heb ei gefnogi cyn derbyn cais uniongyrchol sy'n ymddangos yn llwyddiannus.