Uzu HTTP-prokurilon en Java HttpClient
Transdonu ProxySelector al la HTTP-klienta konstruanto de Java kaj apartigu konektan kaj petan tempolimojn.
En Java 11 aŭ posta, agordu ProxySelector ĉe la klienta konstruanto. La prokurilaj ecoj de la tuta JVM tiel restas netuŝitaj:
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());
}
}Anstataŭigu la dokumentan finpunkton per via HTTP-prokurilo; la listo de HTTP-prokuriloj provizas kandidatojn por testi. ProxySelector.of ricevas soketadreson: uzu la gastiganton sen prefikso http:// kaj donu la pordon aparte. Ĝi elektas HTTP-prokurilon, ne SOCKS laŭ la pordonumero. La URI de la peto restas la vera celo.
HTTPS povas iri tra ĉi tiu HTTP-prokurilo uzante tunelon. Ne necesas malaltigi la sekurecon de la celo, kaj la agordo ne implicas TLS-subtenon ĉe la prokurila aŭskultanto mem.
La konekta tempolimo de la klienta konstruanto validas dum starigo de konekto; la peto havas propran tempolimon. Tenu ambaŭ eksplicitaj, ĉar peto povas reuzi ekzistantan konekton. Reta, aŭtentikiga aŭ tunela escepto povas okazi antaŭ iu ajn celrespondo, dum redonita erarstato ne nepre ĵetas escepton.
Reuzu la klienton por petoj kun la sama enkursiga politiko, por ke la aplikaĵo profitu de ĝia konektadministrado.