የHttpClient 4 ፕሮክሲ ስህተት፦ "http protocol is not supported"
የ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 ጥሪ ውስጣዊውን ይተካል ብለው ከመገመት ይልቅ።
ይህ ምርመራ የአካባቢውን የእቅድ መዝገብ ይመለከታል። የፕሮክሲ ማረጋገጫ ጥያቄ ወይም የተከለከለ ጉዳይ በኋላ የሚመጣ ሌላ ውጤት ነው። እነዚያን ምላሾች ሲመረምሩ ሁለቱንም የፋብሪካ መዝገቦች ይጠብቁ።