Gumamit ng HTTP proxy sa Java HttpClient
Magpasa ng ProxySelector sa HTTP client builder ng Java at ihiwalay ang timeout ng koneksyon sa timeout ng request.
Sa Java 11 o mas bago, magtakda ng ProxySelector sa client builder. Hindi nito binabago ang proxy properties ng buong 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());
}
}Palitan ang endpoint na pang-dokumentasyon ng iyong HTTP proxy; may mga kandidatong masusubukan sa listahan ng HTTP proxy. Socket address ang tinatanggap ng ProxySelector.of: gamitin ang host nang walang http:// prefix at ibigay ang port nang hiwalay. HTTP proxy ang pinipili nito, hindi SOCKS batay sa numero ng port. Mananatiling tunay na destinasyon ang URI ng request.
Makakadaan ang HTTPS sa HTTP proxy na ito gamit ang tunnel. Hindi kailangang ibaba ang seguridad ng destinasyon at hindi ibig sabihin ng setup na TLS-capable ang mismong listener ng proxy.
Nalalapat ang connection timeout ng client builder sa pagtatatag ng koneksyon; may sariling timeout ang request. Panatilihing malinaw ang dalawa dahil maaaring gumamit muli ng umiiral na koneksyon ang request. Maaaring mangyari ang network, authentication o tunnel exception bago magkaroon ng anumang response ang destinasyon, pero hindi kinakailangang mag-throw ng exception ang ibinalik na error status.
Gamitin muli ang client para sa mga request na pareho ang routing policy upang makinabang ang app sa connection management nito.