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 का प्रॉक्सी पता भर सकती है। दूसरा बिल्डर कॉन्फ़िगर करने से पहले से बना क्लाइंट अपडेट नहीं होता।
बिल्डर का स्वामित्व भी जाँचें: HttpClientBuilder दस्तावेज़ित करता है कि स्पष्ट रूप से दिया गया कनेक्शन प्रबंधक उसके अलग SSL कॉन्फ़िगरेशन इनपुट को ओवरराइड कर सकता है। आवश्यक फ़ैक्टरियाँ प्रबंधक की रजिस्ट्री में रखें, बजाय यह मानने के कि बाद का setSSLContext कॉल उसके आंतरिक भाग बदल देगा।
यह निदान स्थानीय स्कीम रजिस्ट्री से संबंधित है। प्रॉक्सी प्रमाणीकरण चुनौती या अस्वीकृत गंतव्य बाद का, अलग परिणाम है। उन प्रतिक्रियाओं की जाँच करते समय दोनों फ़ैक्टरी पंजीकरण बनाए रखें।