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 حمایت کا مطلب نہیں۔

کلائنٹ بلڈر کا کنکشن ٹائم آؤٹ کنکشن بناتے وقت لاگو ہوتا ہے؛ درخواست کا اپنا ٹائم آؤٹ ہے۔ دونوں واضح رکھیں کیونکہ درخواست موجودہ کنکشن دوبارہ استعمال کر سکتی ہے۔ منزل کے کسی جواب سے پہلے نیٹ ورک، تصدیق یا ٹنل استثنا آ سکتا ہے، جبکہ واپس آیا غلطی اسٹیٹس لازماً استثنا نہیں اٹھاتا۔

ایک ہی روٹنگ پالیسی والی درخواستوں میں کلائنٹ دوبارہ استعمال کریں تاکہ ایپ اس کی کنکشن مینجمنٹ سے فائدہ اٹھائے۔

متعلقہ مضامین