2015-11-06 11 views
7

URLConnection के साथ कनेक्शन बनाते समय या 0xके साथ कनेक्शन बनाते समय या कैसे कनेक्शन को कैसे प्राप्त किया जाए, इसके बारे में जावा के बारे में क्या पता चलता है?जावा में प्रॉक्सी-कम कनेक्शन कैसे प्राप्त करें?

मैंने सोचा कि यह Proxy.NO_PROXY था। जावाडोक से हवाला देते हुए:

एक प्रॉक्सी सेटिंग है, जो एक सीधा संबंध का प्रतिनिधित्व करता है, मूल रूप से कह प्रोटोकॉल हैंडलर किसी भी प्रॉक्सी

फिर भी इस तरह के एक कनेक्शन का उपयोग करने के लिए नहीं अभी भी ProxySelector के माध्यम से जाना जाएगा। मुझे यह नहीं मिला ??

public static void main(String[] args) throws MalformedURLException, IOException { 
    ProxySelector.setDefault(new MyProxySelector()); 
    URL url = new URL("http://foobar.com/x1/x2"); 
    URLConnection connection = url.openConnection(Proxy.NO_PROXY); 
    connection.connect(); 
} 

और एक डमी ProxySelector जो कुछ नहीं करता है, लेकिन लोग इन क्या चल रहा है:

मैं मेरी बात साबित करने के लिए एक छोटे से परीक्षण कर लिया है

public class MyProxySelector extends ProxySelector { 

    @Override 
    public List<Proxy> select(URI uri) { 
     System.out.println("MyProxySelector called with URI = " + uri); 
     return Collections.singletonList(Proxy.NO_PROXY); 
    } 

    @Override 
    public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {} 
} 

जो प्रिंट:

"MyProxySelector called with URI = socket://foobar.com:80" 

(नोट करें कि प्रोटोकॉल http से socket से कैसे बदल गया है)

मैं निश्चित रूप से इस तरह से मेरी ProxySelector बना सकते हैं इतना है कि यह हमेशा Proxy.NO_PROXY लौटाता है यदि URI योजना socket है, लेकिन मुझे लगता है कि ऐसे अवसर भी आते हैं जहां साइट पर एक सॉक्स प्रॉक्सी वहाँ होगा और फिर इसे सही नहीं होगा ।

मुझे प्रश्न दोबारा दोबारा करने दें: मुझे यह सुनिश्चित करने के लिए एक तरीका चाहिए कि एक विशिष्ट URLConnection प्रॉक्सी का उपयोग नहीं करता है, भले ही सिस्टम गुणों को सेट किया जा सके या ProxySelector इंस्टॉल किया गया हो।

+1

मुझे लगता है कि आप 'ProxySelector.setDefault (null) भी सेट कर सकते हैं; '। यह कनेक्शन को निर्देशित करने की अनुमति देगा। – Tunaki

+0

@ टुनकी। दुर्भाग्यवश वह प्रॉक्सी चयनकर्ता को पूरी तरह से और * सभी * कनेक्शनों को बंद कर देगा। – peterh

+1

तथ्य यह है कि प्रत्यक्ष कनेक्शन 'प्रॉक्सी चयनकर्ता' के माध्यम से जाते हैं, एक कार्यान्वयन विस्तार है। तुम क्यो फिकर करते हो? क्या आपके पास * वास्तविक * समस्या है? – EJP

उत्तर

संबंधित मुद्दे