Uporaba HTTP posrednika v Java HttpClient
Podajte ProxySelector graditelju HTTP odjemalca v Javi in ločite časovno omejitev povezave od omejitve zahteve.
V Javi 11 ali novejši nastavite ProxySelector na graditelju odjemalca. Lastnosti posrednika za celotno JVM tako ostanejo nespremenjene:
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());
}
}Dokumentacijsko končno točko zamenjajte s svojim HTTP posrednikom; seznam HTTP posrednikov ponuja kandidate za preizkus. ProxySelector.of sprejme naslov vtičnice: uporabite gostitelja brez predpone http:// in vrata podajte posebej. Izbere HTTP posrednika, ne SOCKS glede na številko vrat. URI zahteve ostane pravi cilj.
HTTPS lahko skozi ta HTTP posrednik potuje po predoru. Zaščite cilja ni treba znižati in nastavitev ne pomeni, da poslušalec posrednika sam podpira TLS.
Časovna omejitev povezave na graditelju velja ob vzpostavljanju povezave; zahteva ima lastno omejitev. Obe naj bosta razvidni, saj lahko zahteva ponovno uporabi obstoječo povezavo. Omrežna izjema, izjema overjanja ali predora se lahko pojavi pred kakršnim koli odgovorom cilja, medtem ko vrnjen status napake ne povzroči nujno izjeme.
Odjemalca ponovno uporabite za zahteve z enako politiko usmerjanja, da aplikacija izkoristi njegovo upravljanje povezav.