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 ಬೆಂಬಲಿಸುತ್ತದೆ ಎಂದಲ್ಲ.

ಕ್ಲೈಂಟ್ ಬಿಲ್ಡರ್‌ನ ಸಂಪರ್ಕ ಟೈಮ್‌ಔಟ್ ಸಂಪರ್ಕ ಸ್ಥಾಪಿಸುವಾಗ ಅನ್ವಯಿಸುತ್ತದೆ; ವಿನಂತಿಗೆ ಅದರದೇ ಟೈಮ್‌ಔಟ್ ಇದೆ. ವಿನಂತಿ ಈಗಿರುವ ಸಂಪರ್ಕವನ್ನು ಮರುಬಳಕೆ ಮಾಡಬಹುದು, ಆದ್ದರಿಂದ ಎರಡನ್ನೂ ಸ್ಪಷ್ಟವಾಗಿಡಿ. ಗಮ್ಯಸ್ಥಾನದ ಯಾವುದೇ ಉತ್ತರಕ್ಕಿಂತ ಮೊದಲು ಜಾಲ, ದೃಢೀಕರಣ ಅಥವಾ ಟನಲ್ ಎಕ್ಸೆಪ್ಶನ್ ಬರಬಹುದು; ಹಿಂತಿರುಗಿದ ದೋಷ ಸ್ಥಿತಿ ಕಡ್ಡಾಯವಾಗಿ ಎಕ್ಸೆಪ್ಶನ್ ಉಂಟುಮಾಡುವುದಿಲ್ಲ.

ಒಂದೇ ರೂಟಿಂಗ್ ನೀತಿಯ ವಿನಂತಿಗಳಿಗೆ ಕ್ಲೈಂಟ್ ಮರುಬಳಕೆ ಮಾಡಿ, ಅಪ್ಲಿಕೇಶನ್ ಅದರ ಸಂಪರ್ಕ ನಿರ್ವಹಣೆಯಿಂದ ಪ್ರಯೋಜನ ಪಡೆಯಲಿ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು