សម្រាប់ Java 11 ឬថ្មីជាង សូមកំណត់ ProxySelector នៅលើ client builder។ វាទុកលក្ខណៈសម្បត្តិប្រូកស៊ីរបស់ 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 ទទួលអាសយដ្ឋានសុកខិត៖ ប្រើ host ដោយគ្មានបុព្វបទ http:// ហើយផ្តល់ច្រកដាច់ដោយឡែក។ វាជ្រើស HTTP ប្រូកស៊ី មិនមែន SOCKS តាមលេខច្រកទេ។ URI របស់សំណើនៅតែជាគោលដៅពិត។

HTTPS អាចឆ្លងកាត់ HTTP ប្រូកស៊ីនេះដោយប្រើផ្លូវរូង។ មិនចាំបាច់បន្ថយសុវត្ថិភាពគោលដៅទេ ហើយការកំណត់នេះមិនបញ្ជាក់ថាចំណុចទទួលការតភ្ជាប់របស់ប្រូកស៊ីខ្លួនឯងគាំទ្រ TLS ទេ។

ពេលកំណត់ការតភ្ជាប់របស់ client builder អនុវត្តពេលបង្កើតការតភ្ជាប់; សំណើមានពេលកំណត់របស់ខ្លួន។ ទុកទាំងពីរឱ្យច្បាស់ ព្រោះសំណើអាចប្រើការតភ្ជាប់ដែលមានស្រាប់ឡើងវិញ។ ករណីលើកលែងបណ្ដាញ ការផ្ទៀងផ្ទាត់អត្តសញ្ញាណ ឬផ្លូវរូងអាចកើតមុនចម្លើយណាមួយពីគោលដៅ ខណៈស្ថានភាពកំហុសដែលត្រឡប់មកមិនចាំបាច់បង្កើតករណីលើកលែងទេ។

ប្រើ client ឡើងវិញសម្រាប់សំណើដែលមានគោលការណ៍កំណត់ផ្លូវដូចគ្នា ដើម្បីឱ្យកម្មវិធីទទួលប្រយោជន៍ពីការគ្រប់គ្រងការតភ្ជាប់របស់វា។

អត្ថបទពាក់ព័ន្ធ