अलग प्रॉक्सी चुनते समय OkHttp संसाधनों का पुन: उपयोग करें
कॉल बनाने से पहले प्रॉक्सी-कॉन्फ़िगर किया गया OkHttp क्लाइंट चुनें और समझें कि newBuilder क्या साझा करता है।
OkHttp अनुरोध में कोई सामान्य परिवर्तनीय प्रॉक्सी फ़ील्ड नहीं होता। इसका कॉल बनाने से पहले इच्छित मार्ग वाला क्लाइंट चुनें।
जब बाकी कॉन्फ़िगरेशन साझा रहना चाहिए, तो किसी मौजूदा क्लाइंट से रूट किया गया क्लाइंट प्राप्त करें:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();एंडपॉइंट केवल उदाहरण है। HTTP प्रॉक्सी सूची के सार्वजनिक HTTP एंडपॉइंट अनुमत सार्वजनिक-सेवा मार्ग के लिए इस सॉकेट पते को भर सकते हैं, बशर्ते आधार क्लाइंट की नीति नए एंडपॉइंट को कोई प्रॉक्सी क्रेडेंशियल न दे। OkHttp दस्तावेज़ित करता है कि newBuilder कनेक्शन-पूल और थ्रेड संसाधन मूल क्लाइंट के साथ साझा करता है। इसका अर्थ यह नहीं है कि एक प्रॉक्सी से स्थापित सॉकेट को दूसरे मार्ग के रूप में फिर से लेबल किया जा सकता है। कनेक्शन की पात्रता अभी भी मार्ग और पते के कॉन्फ़िगरेशन पर निर्भर करती है।
दोहराए जाने वाले काम के लिए, उस रूटिंग नीति से कुंजीबद्ध सीमित क्लाइंट सेट रखें जिसकी आपको वास्तव में आवश्यकता है। ऐसे असीमित मैप से बचें जिसकी कुंजियों में अब तक देखे गए सभी अस्थायी खाते या प्रॉक्सी भिन्नताएँ हों।
संसाधन साझा करना बंद होने को भी प्रभावित करता है। साझा कैश बंद करना या साझा डिस्पैचर बंद करना उन संसाधनों का उपयोग करने वाले अन्य व्युत्पन्न क्लाइंट को प्रभावित कर सकता है। प्रत्येक व्युत्पन्न क्लाइंट को पृथक नेटवर्क स्टैक मानने के बजाय संसाधन स्वामित्व को स्पष्ट अनुप्रयोग-स्तरीय जीवनकाल दें।
अंत में, चयनित प्रॉक्सी की पहचान कॉल के अपने मेटाडेटा में शामिल करें। एक वैश्विक “अंतिम चयनित प्रॉक्सी” चर कई समवर्ती अनुरोधों के मार्ग की पहचान नहीं कर सकता।