د HttpClient 4 پراکسي تېروتنه: http پروتوکول نه ملاتړ کېږي
کله چې HTTPS لار لومړی له HTTP پراکسي سره نښلول کېږي، ساده HTTP فابریکه په خپل Apache HttpClient 4 راجستر کې وساتئ.
په Apache HttpClient 4 اپلیکیشن کې، د HTTPS منزل دا نه مانا چې هره اړیکه له TLS سره پیلېږي. عادي HTTP پراکسي ته د ناانکریپټې اړیکې له لارې رسېږو، بیا CONNECT تونل پرانیزي او TLS د منزل په لور طبقې کېږي.
که د اړیکو ځانګړی مدیر یوازې https ثبت کړي، لومړنی پراکسي ټوپ کېدای شي په UnsupportedSchemeException: http protocol is not supported سره ناکام شي.
د 4.5 API لپاره، کله چې دا مدیر جوړوئ دواړه فابریکې شاملې کړئ:
var registry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", tlsFactory)
.build();
var manager = new PoolingHttpClientConnectionManager(registry);
var client = HttpClients.custom()
.setConnectionManager(manager)
.setProxy(new HttpHost("proxy.example.net", 8080, "http"))
.build();
tlsFactory د اپلیکیشن موجوده SSLConnectionSocketFactory ده، له خپلې پلان شوې باور او کوربه-نوم کتنې سره. ښودل شوي ډولونه د Apache 4 د org.apache.http بنډلونو دي. دا ټوټه د Java د سیمهایز متغیر ډول اټکل مني؛ زوړ Java کوډ کولای شي څرګند ډولونه وکاروي.
سم شوی مدیر له هغه کلاینټ سره ونښلوئ چې واقعاً د غوښتنې لپاره کارول کېږي. د پراکسي تصدیق پرته د اجازهلرونکې عامه HTTPS غوښتنې لپاره، له HTTP پراکسي لیست څخه یوه HTTP ننوتنه کولای شي د HttpHost پراکسي پته ډکه کړي. بل builder تنظیمول دمخه جوړ شوی کلاینټ نه تازه کوي.
د builder مالکیت هم وګورئ: HttpClientBuilder مستند کوي چې په څرګنده ورکړل شوی د اړیکو مدیر کولای شي د هغه جلا SSL ترتیباتو ننوتنې تر پښو لاندې کړي. اړینې فابریکې د مدیر په راجستر کې کېږدئ، پرځای د دې چې فکر وکړئ وروسته setSSLContext غوښتنه به د هغه داخلي برخې بدلې کړي.
دا تشخیص د سیمهایز سکیم راجستر په اړه دی. د پراکسي تصدیق ننګونه یا رد شوی منزل وروستی، بېل نتیجه ده. د هغو ځوابونو د څېړنې پر مهال دواړه فابریکې ثبت وساتئ.