HTTP tarpinio serverio naudojimas Java HttpClient
Perduokite ProxySelector Java HTTP kliento kūrimo objektui ir atskirkite ryšio bei užklausos laukimo laikus.
Java 11 ar naujesnėje versijoje kliento kūrimo objekte nustatykite ProxySelector. Taip nekeičiamos visos JVM tarpinio serverio savybės:
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());
}
}Dokumentacijos galinį tašką pakeiskite savo HTTP tarpiniu serveriu; HTTP tarpinių serverių sąrašas pateikia kandidatų bandymams. ProxySelector.of priima lizdo adresą: naudokite pagrindinio kompiuterio adresą be http:// priešdėlio ir prievadą pateikite atskirai. Pasirenkamas HTTP tarpinis serveris, ne SOCKS pagal prievado numerį. Užklausos URI lieka tikroji paskirtis.
HTTPS gali eiti per šį HTTP tarpinį serverį tuneliu. Nereikia silpninti paskirties apsaugos, o tokia sąranka nereiškia, kad pats tarpinio serverio klausytojas palaiko TLS.
Kliento kūrimo objekto ryšio laukimo laikas galioja užmezgant ryšį; užklausa turi savo laukimo laiką. Abu nurodykite aiškiai, nes užklausa gali pakartotinai naudoti esamą ryšį. Tinklo, autentifikavimo ar tunelio išimtis gali įvykti iki bet kokio paskirties atsakymo, o grąžintas klaidos statusas nebūtinai sukelia išimtį.
Pakartotinai naudokite klientą vienodos maršrutizavimo politikos užklausoms, kad programa pasinaudotų jo ryšių valdymu.