በJava HttpClient ውስጥ HTTP ፕሮክሲ ይጠቀሙ
ለJava HTTP ደንበኛ ገንቢ ProxySelector ይስጡ፣ የግንኙነትና የጥያቄ ጊዜ ገደቦችንም ይለዩ።
በJava 11 ወይም በኋለኛ ስሪት የደንበኛው ገንቢ ላይ ProxySelector ያቀናብሩ። ይህ የሙሉ JVM የፕሮክሲ ባህሪያትን ሳይቀይር ይተዋል፦
import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class ProxyExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("203.0.113.10", 8080)))
.connectTimeout(Duration.ofSeconds(5))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/"))
.timeout(Duration.ofSeconds(15))
.GET()
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}የሰነዱን መገናኛ በራስዎ HTTP ፕሮክሲ ይተኩ፤ የHTTP ፕሮክሲ ዝርዝር ለሙከራ እጩዎችን ይሰጣል። ProxySelector.of የሶኬት አድራሻ ይወስዳል፤ አስተናጋጁን ያለ http:// ቅድመ ቅጥያ ይጠቀሙና ወደቡን ለብቻ ይስጡ። HTTP ፕሮክሲ ይመርጣል እንጂ በወደብ ቁጥር መሠረት SOCKS አይመርጥም። የጥያቄው URI እውነተኛው መድረሻ ይቀጥላል።
HTTPS በዚህ HTTP ፕሮክሲ ዋሻ በመጠቀም ሊያልፍ ይችላል። የመድረሻውን ደህንነት መቀነስ አያስፈልግም፣ ውቅሩም የፕሮክሲው አድማጭ ራሱ TLS ይደግፋል ማለት አይደለም።
በደንበኛው ገንቢ ያለው የግንኙነት ጊዜ ገደብ ግንኙነት ሲፈጠር ይሠራል፤ ጥያቄው የራሱ ገደብ አለው። ጥያቄ ያለውን ግንኙነት እንደገና ሊጠቀም ስለሚችል ሁለቱንም ግልጽ ያድርጉ። የአውታረ መረብ፣ የማንነት ማረጋገጥ ወይም የዋሻ ልዩ ስህተት ከማንኛውም የመድረሻ ምላሽ በፊት ሊከሰት ይችላል፤ የተመለሰ የስህተት ሁኔታ ግን የግድ ልዩ ስህተት ማስነሳት አይጠበቅበትም።
ተመሳሳይ የመንገድ ፖሊሲ ላላቸው ጥያቄዎች ደንበኛውን ደግመው ይጠቀሙ፣ መተግበሪያውም ከግንኙነት አስተዳደሩ እንዲጠቀም።