5

में मिलता है मैं एक प्रमाणीकृत प्रॉक्सी के माध्यम से एक यूआरएल की सामग्री प्राप्त करने की कोशिश कर रहा हूं। इस कोड को मैं उपयोग करने के लिए कोशिश कर रहा हूँ है:HttpUrlConnection प्रॉक्सी प्रमाणीकरण रीडायरेक्ट लूप

 Authenticator authenticator = new Authenticator() { 
      public PasswordAuthentication getPasswordAuthentication() { 
       System.out.println("authenticating"); 
       return (new PasswordAuthentication("username", "password".toCharArray())); 
      } 
     }; 
     Authenticator.setDefault(authenticator); 
     URL url = new URL("http://www.google.com"); 
     InetSocketAddress proxyAddress = new InetSocketAddress("address.of.proxy", 6060); 
     Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress); 
     HttpURLConnection uc = (HttpURLConnection) url.openConnection(proxy); 
     uc.connect(); 
     System.out.println(uc.getResponseCode()); 

किसी कारण से, प्रमाणीकरण में एक रीडायरेक्ट लूप में हो जाता है, तो परिणाम प्रमाणक छपाई "के सत्यापन" 20 बार, तो एक ProtocolException है

java.net.ProtocolException: Server redirected too many times (20) 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1846) 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439) 
at java.net.URLConnection.getContent(URLConnection.java:739) 
at proxytest.RunThis.main(RunThis.java:29) 

प्रॉक्सी दिए गए प्रमाण-पत्रों के साथ काम कर रहा है, मैंने ब्राउज़र के माध्यम से इसे आजमाया है। मैं इसे दिनों के लिए काम करने की कोशिश कर रहा हूं, मैंने सिस्टम गुणों को सेट करने का प्रयास किया है, अपाचे httpclient, और कुछ भी जो मैं Google से प्राप्त कर सकता हूं। किसी भी विचार की सराहना की। :)

अद्यतन:

मैं WireShark के साथ परीक्षण किया, प्रॉक्सी प्रमाणीकरण विवरण अनुरोध में हैं, लेकिन प्रॉक्सी वापस फेंकता एक 407 त्रुटि। दोबारा, क्रेडेंशियल ठीक हैं, यह ब्राउज़र से पूरी तरह से काम कर रहा है (मैंने वास्तव में उन्हें सुनिश्चित करने के लिए स्रोत कोड से कॉपी किया है)।

हालांकि एक बात मैंने देखी है। प्रॉक्सी-प्राधिकरण शीर्षलेख का मान ब्राउज़र के बीच एक और एक वर्ण में और जावा द्वारा भेजे गए अनुरोध में भिन्न होता है। क्या इसका मतलब कुछ हो सकता है?

+0

मुझे बिल्कुल वही समस्या है ... क्या आपके पास कोई समाधान या कोई नया विचार है? – Ben

+0

आगे: मैंने कुकी-हैंडर का उपयोग करने के बारे में पढ़ा है, लेकिन यहां तक ​​कि एक सक्षम डिफ़ॉल्ट कुकी-हैंडलर 'कुकी हैन्डलर.सेटडिफॉल्ट (नया कुकी मैनेजर (शून्य, कुकी पॉलीसी.एसीसीईपीओएलओएल));' मुझे एक ही परिणाम मिलते हैं ... – Ben

+0

@ कोका हाय क्या आपने इसे काम किया है? – Inoy

उत्तर

0

बस सेट JVM संपत्ति:

jdk.http.auth.tunneling.disabledSchemes = "" 

देखें: http://www.oracle.com/technetwork/java/javase/8u111-relnotes-3124969.html

इसे यहाँ छोड़ दो क्योंकि एक घंटे के लिए मैं समस्या की छानबीन।

+0

StackOverflow में आपका स्वागत है। कृपया यहां एक अच्छा उत्तर लिखना सीखें: [उत्तर]। – Marco

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