Java HttpClient ичинде HTTP прокси колдонуу
Java HTTP кардарынын куруучусуна ProxySelector берип, туташуу менен суроонун убакыт чектерин бөлүп коюңуз.
Java 11 же жаңы нускада кардар куруучусуна ProxySelector коюңуз. Бүт 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());
}
}Документтеги чекитти өзүңүздүн HTTP проксиңизге алмаштырыңыз; HTTP прокси тизмеси сынай турган талапкерлерди берет. ProxySelector.of сокет дарегин алат: хостту http:// префиксисиз колдонуп, портту өзүнчө бериңиз. Ал HTTP прокси тандайт, порт номуру боюнча SOCKS эмес. Суроонун URIси чыныгы максат болуп калат.
HTTPS бул HTTP прокси аркылуу туннель менен өтө алат. Максаттын коопсуздугун төмөндөтүү кереги жок жана жөндөө прокси угуучусунун өзү TLS колдой турганын билдирбейт.
Кардар куруучусундагы туташуу убакыт чеги байланыш түзгөндө колдонулат; суроонун өз убакыт чеги бар. Экөөнү тең ачык кармаңыз, анткени суроо даяр байланышты кайра колдонушу мүмкүн. Тармак, аутентификация же туннель өзгөчө абалы максаттын кандайдыр бир жообуна чейин болушу мүмкүн, ал эми кайтарылган ката статусу сөзсүз өзгөчө абал жаратпайт.
Бирдей маршрут саясаты бар суроолор үчүн кардарды кайра колдонуңуз, ошондо колдонмо анын байланыш башкаруусунан пайда алат.