การตั้งค่า SOCKS ของ Apache HttpClient 5.5 บนตัวจัดการการเชื่อมต่อ
กำหนดค่านโยบายซ็อกเก็ตของพูลด้วย SocketConfig แทนเส้นทางพร็อกซี HTTP หรือโรงงานซ็อกเก็ตที่กำหนดเอง
Apache HttpClient 5.5 มีเส้นทางการกำหนดค่า SOCKS ในการตั้งค่าซ็อกเก็ตของตัวจัดการการเชื่อมต่อ ตัวอย่างที่ดูแลอยู่ใช้ setSocksProxyAddress:
InetSocketAddress socks =
new InetSocketAddress("proxy.example.net", 1080);
PoolingHttpClientConnectionManager manager =
PoolingHttpClientConnectionManagerBuilder.create()
.setDefaultSocketConfig(
SocketConfig.custom()
.setSocksProxyAddress(socks)
.build()
)
.build();
CloseableHttpClient client = HttpClients.custom()
.setConnectionManager(manager)
.build();
ส่วนนี้ใช้แพ็กเกจ org.apache.hc ของ HttpClient 5 และ SocketConfig ของ HttpCore คำขอที่ทำด้วยไคลเอนต์นี้ใช้พูลที่กำหนดค่าไว้ข้างต้น ปิดไคลเอนต์เมื่อขอบเขตความเป็นเจ้าของของแอปพลิเคชันสิ้นสุดลง
วาง URL จริงของเว็บไซต์บนคำขอตามปกติ สำหรับคำขอที่ได้รับอนุญาตไปยังไซต์สาธารณะโดยไม่มีการตรวจสอบสิทธิ์พร็อกซี รายการพร็อกซี SOCKS เสนอที่อยู่ที่เป็นตัวเลือก เลือกเวอร์ชัน SOCKS ที่สภาพแวดล้อมรันไทม์จริงรองรับ ที่อยู่ SOCKS กำหนดค่าการขนส่งที่ใช้เพื่อไปถึงมัน ไม่ใช่เส้นทางพร็อกซีส่งต่อ HTTP ที่ให้มาเป็น HttpHost
นี่คือการตั้งค่าซ็อกเก็ตเริ่มต้นสำหรับตัวจัดการนี้ แอปพลิเคชันที่ใช้ตัวแก้ไข SocketConfig ต่อเส้นทางควรใช้การตั้งค่า SOCKS ที่ต้องการผ่านนโยบายนั้นแทน ตัวอย่างยังคงนโยบาย DNS ปลายทางปกติของตัวจัดการการเชื่อมต่อ การแก้ชื่อระยะไกลต้องมีการกำหนดค่าที่ตรวจสอบแยกต่างหาก