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 ସମର୍ଥନ କରେ ବୋଲି ନୁହେଁ।
କ୍ଲାଏଣ୍ଟ ବିଲ୍ଡର୍ର ସଂଯୋଗ ଟାଇମଆଉଟ୍ ସଂଯୋଗ ତିଆରି ସମୟରେ ଲାଗୁ ହୁଏ; ଅନୁରୋଧର ନିଜ ଟାଇମଆଉଟ୍ ଅଛି। ଉଭୟ ସ୍ପଷ୍ଟ ରଖନ୍ତୁ, କାରଣ ଅନୁରୋଧ ପୂର୍ବ ସଂଯୋଗ ପୁଣି ବ୍ୟବହାର କରିପାରେ। ଗନ୍ତବ୍ୟର କୌଣସି ଉତ୍ତର ପୂର୍ବରୁ ନେଟୱର୍କ, ପ୍ରମାଣୀକରଣ କିମ୍ବା ଟନେଲ୍ ଏକ୍ସେପସନ୍ ଆସିପାରେ, କିନ୍ତୁ ଫେରିଥିବା ତ୍ରୁଟି ଷ୍ଟାଟସ୍ ନିହାତି ଏକ୍ସେପସନ୍ ଉଠାଇବ ନାହିଁ।
ସମାନ ରାଉଟିଂ ନୀତିର ଅନୁରୋଧ ପାଇଁ କ୍ଲାଏଣ୍ଟ ପୁଣି ବ୍ୟବହାର କରନ୍ତୁ, ଯାହାରେ ଆପ୍ ତାହାର ସଂଯୋଗ ପରିଚାଳନାର ଲାଭ ପାଏ।