Inilalarawan ng isang Java proxy object ang isang ruta. Ang network client pa rin ang nagpapasya kung anong mga uri ng ruta ang magagamit nito. Mahalaga ito kapag ang available na endpoint ay nagsasalita ng SOCKS at ang aplikasyon ay gumagamit ng java.net.http.HttpClient.

Sa implementasyon ng JDK 25 na sinusuri rito, tinatanggap ng request code ng HTTP client ang isang HTTP na kandidato mula sa selector. Ang isang SOCKS na kandidato ay hindi nagiging dahilan upang magsagawa ito ng SOCKS negotiation; maaaring magpatuloy ang implementasyon nang walang proxy. Kaya ang isang matagumpay na tugon ay hindi sapat na ebidensya na ginamit ang SOCKS entry ng isang custom na selector.

Piliin muna ang transport

Para sa umiiral na aplikasyong nakabatay sa URLConnection, maaaring bigyan ang protocol handler ng sinusuportahang tahasang proxy kapag binubuksan ang koneksyon:

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);

Para sa mga pinapayagang pagsubok sa pampublikong target, gumamit ng tumutugmang SOCKS endpoint mula sa iyong serbisyo o sa listahan ng SOCKS proxy. Ito ay ibang client API, hindi alternatibong baybay ng HttpClient.Builder.proxy. Panatilihin ang destination URL upang patuloy na makilala ng HTTPS ang nilalayong website.

Ang aplikasyong kailangang panatilihin ang java.net.http ay maaaring gumamit sa halip ng katugmang HTTP proxy endpoint, kabilang ang isang aprubadong adapter na humahawak sa susunod na SOCKS na koneksyon. Nagdadagdag iyon ng tunay na bahagi at isa pang hangganan ng access; ang pagpapalit ng port 8080 sa 1080 ay hindi nagbibigay ng pagsasaling iyon.

Panatilihing nakikita ang pagpili at pag-adopt

Itala ang resulta ng selector at ang koneksyong aktuwal na binubuksan ng client. Ang una ay naglalarawan ng output ng patakaran; ang pangalawa ay nagtatatag kung inampon ito ng implementasyon.

Iugnay ang mga konklusyon sa runtime at transport na ginagamit. Ang mga JVM SOCKS property na ginagamit ng isang socket implementation ay hindi pangakong isasangguni ng bawat HTTP library ang mga ito. Kapag sapilitan ang ruta, dapat matukoy ang hindi sinusuportahang uri ng proxy bago tanggapin ang isang tila matagumpay na direktang kahilingan.

Kaugnay na mga artikulo