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