ប្រើ HTTP ប្រូកស៊ីក្នុង Java HttpClient
ផ្តល់ ProxySelector ទៅ builder របស់ HTTP client ក្នុង Java ហើយបែងចែកពេលកំណត់ការតភ្ជាប់ពីពេលកំណត់សំណើ។
សម្រាប់ 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 ឡើងវិញសម្រាប់សំណើដែលមានគោលការណ៍កំណត់ផ្លូវដូចគ្នា ដើម្បីឱ្យកម្មវិធីទទួលប្រយោជន៍ពីការគ្រប់គ្រងការតភ្ជាប់របស់វា។