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 کال اس کے اندرونی حصے بدل دے گی۔

یہ تشخیص مقامی اسکیما رجسٹری سے متعلق ہے۔ پراکسی توثیق کا چیلنج یا مسترد شدہ منزل بعد کا، مختلف نتیجہ ہے۔ ان ردعمل کی جانچ کرتے وقت دونوں فیکٹری رجسٹریشن برقرار رکھیں۔

متعلقہ مضامین