2011-07-13 8 views
10

एक जावा डेस्कटॉप अनुप्रयोग के लिए में Http प्रॉक्सी सेट करने के लिए हम इन गुणोंकैसे एक एप्लेट

System.setProperty("java.net.useSystemProxies","true"); 
System.setProperty("http.proxyHost", "1.1.1.1"); 
System.setProperty("http.proxyPort", "8080"); 

हर http कनेक्शन परिभाषित प्रॉक्सी के माध्यम से किया जाएगा सेट करने के बाद।

लेकिन एक एप्लेट के लिए इन काम नहीं करता। (एक एप्लेट दर्शक यह करता है में लेकिन एक ब्राउज़र यह does not में।) एप्लेट इन सेटिंग्स को जो नियंत्रण कक्ष \ जावा \ नेटवर्क सेटिंग्स \ प्रॉक्सी सेटिंग्स में परिभाषित कर रहे हैं का उपयोग करता है ।

मैं एक एप्लेट में प्रॉक्सी कैसे सेट कर सकता हूं? (हर खोलने के संबंध में उपयोग करना प्रॉक्सी वर्ग मेरे लिए एक समाधान नहीं है।)

एप्लेट पर हस्ताक्षर किए और जावा 1.6

उत्तर

7

साथ संकलित मैं कल्पना असली कारण यह है कि सिस्टम गुण दृष्टिकोण से काम नहीं करता है कि है जब तक एप्लेट शुरू होता है, तब तक जावा रनटाइम सिस्टम पहले से ही गुणों को पढ़ता है और डिफ़ॉल्ट प्रॉक्सी चयनकर्ता सेट करता है।

क्या आपने ProxySelector का उपयोग करने का प्रयास किया है? this document के खंड 4 का संदर्भ लें।

बेशक, यह केवल तब काम करने की संभावना है जब आपका एप्लेट एक हस्ताक्षरित एप्लेट हो।

+0

यह काम किया है – e13420xx

+0

@ e13420xx, 'प्रॉक्सी सिलेक्टर' एप्लेट के लिए काम किया? –

+0

@ निकोलय कुज़नेत्सोव - मुझे ऐसा लगता है ... क्योंकि वह यही पूछ रहा था। –

0

आप इसे एपीआई का उपयोग करके कर सकते हैं लेकिन प्रत्येक कनेक्शन के लिए नहीं।

URL.openConnection() पर देखें। यह हैंडलर को कॉल का प्रतिनिधित्व करता है। हैंडलर हैंडलर फैक्ट्री (यदि पंजीकृत है) द्वारा बनाया गया है। इसलिए, आपको अपना कारखाना पंजीकृत करना होगा, अपना यूआरएल हैंडलर बनाएं जो प्रॉक्सी के माध्यम से यूआरएल कनेक्शन करता है (URL.openConnection (प्रॉक्सी) पर कॉल करता है)।

फैक्टरी को इंटरफ़ेस URLStreamHandlerFactory को लागू करना होगा और स्थिर विधि URL.setURLStreamHandlerFactory() को कॉल करके पंजीकृत किया जा सकता है।