Përdorni një proxy HTTP në Java HttpClient
Jepini një ProxySelector ndërtuesit të klientit HTTP të Java-s dhe ndani afatin e lidhjes nga ai i kërkesës.
Në Java 11 ose më të re, vendosni një ProxySelector në ndërtuesin e klientit. Vetitë proxy për të gjithë JVM-në mbeten kështu të pandryshuara:
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());
}
}Zëvendësoni pikën e dokumentacionit me proxy-n tuaj HTTP; lista e proxy-ve HTTP ofron kandidatë për prova. ProxySelector.of merr një adresë socket-i: përdorni hostin pa prefiksin http:// dhe jepni portën veçmas. Zgjedh proxy HTTP, jo SOCKS sipas numrit të portës. URI-ja e kërkesës mbetet destinacioni i vërtetë.
HTTPS mund të kalojë nëpër këtë proxy HTTP me një tunel. Nuk ka nevojë të ulet siguria e destinacionit dhe konfigurimi nuk nënkupton që dëgjuesi i proxy-t vetë mbështet TLS.
Afati i lidhjes në ndërtuesin e klientit zbatohet gjatë vendosjes së lidhjes; kërkesa ka afatin e vet. Mbajini të dy të qartë, sepse një kërkesë mund të ripërdorë një lidhje ekzistuese. Përjashtimi i rrjetit, autentikimit ose tunelit mund të vijë para çdo përgjigjeje të destinacionit, ndërsa statusi i gabimit i kthyer nuk shkakton domosdoshmërisht përjashtim.
Ripërdoreni klientin për kërkesa me të njëjtën politikë rutimi që aplikacioni të përfitojë nga menaxhimi i lidhjeve të tij.