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:// угтваргүй ашиглаж, портыг тусад нь өг. Энэ нь портын дугаараас хамаарч SOCKS бус, HTTP прокси сонгодог. Хүсэлтийн URI жинхэнэ зорилт хэвээр байна.

HTTPS энэ HTTP проксигоор хонгил ашиглан өнгөрч болно. Зорилтын хамгаалалтыг сулруулах шаардлагагүй бөгөөд тохиргоо нь проксигийн сонсогч өөрөө TLS дэмжинэ гэсэн үг биш.

Клиент бүтээгчийн холболтын хугацааны хязгаар нь холболт үүсгэхэд үйлчилнэ; хүсэлт өөрийн хязгаартай. Хүсэлт бэлэн холболтыг дахин ашиглаж болох тул хоёуланг тодорхой байлга. Зорилтын ямар нэг хариунаас өмнө сүлжээ, баталгаажуулалт эсвэл хонгилын exception үүсэж болох ч буцсан алдааны төлөв заавал exception үүсгэхгүй.

Нэг чиглүүлэлтийн бодлоготой хүсэлтүүдэд клиентээ дахин ашиглаж, аппликейшнийг түүний холболтын удирдлагаас ашиг хүртээ.

Холбоотой нийтлэлүүд