दिलचस्प पोस्ट
स्काला संकलक डिफ़ॉल्ट तर्कों के साथ ओवरलोड किए गए तरीकों को अस्वीकार क्यों करता है? प्रायोगिक :: फाइलसिस्टम लिंकर त्रुटि बाइनरी पेड़ों के आवेदन क्या हैं? सेलबॉर्न फैक्टरप्लेट में लेबल टेक्स्ट घुमाएं अजगर में स्वत: पूर्ण करने के लिए कोड कैसे करें? जावास्क्रिप्ट में एक स्ट्रिंग के पीछे जी ++ -fdump-class-hierarchy के उत्पादन में पहली (int (*) (…)) 0 vtable प्रविष्टि क्या है? पता लगाएँ कि कोई चेतावनी या पुष्टिकरण पृष्ठ पर प्रदर्शित होता है बाईं ओर से एक एंड्रॉइड स्लाइडिंग ड्रॉवर स्लाइड कैसे बनाई जाए? क्लस्टर इंडेक्स GUID प्राथमिक कुंजी के प्रदर्शन में सुधार क्या मैं जीसीसी के साथ x86 विधानसभा के इंटेल सिंटैक्स का उपयोग कर सकता हूं? पूल कब बदलता है? बंडल आइडेंटिफ़ायर और पुश प्रमाणपत्र … एपीएस-एंटरटेनमेंट एंटाइटेलमेंट त्रुटि Datagridview में बटन कॉलम में क्लिक ईवेंट कैसे प्रबंधित करें? पायथन में स्ट्रिंग से पहले एक स्ट्रिंग प्रिंटिंग 'यू' प्रिंट करना है?

HttpUrlConnection के साथ प्रीपेडिव बेसिक एथ?

HttpUrlConnection का उपयोग करके प्रीपेडिव मूल HTTP प्रमाणीकरण का उपयोग करने का सबसे अच्छा तरीका क्या है (अभी के लिए मान लें कि मैं एचटीटीपी क्लाइंट का उपयोग नहीं कर सकता)।

स्पष्टीकरण के लिए संपादित करें: मैं बेस64 एन्कोडिंग का उपयोग करते हुए अनुरोध हैडर में un / pw को सही ढंग से सेट कर रहा हूं I क्या कोई अतिरिक्त झंडे या गुण हैं जिन्हें सेट करने की आवश्यकता है, या क्या यह तथ्य है कि मैं अनुरोध के लिए आधारभूत ऑथ हेडर स्थापित कर रहा हूं जो कि सभी पूर्वव्यापी मूल प्रमाण के लिए आवश्यक है?

Solutions Collecting From Web of "HttpUrlConnection के साथ प्रीपेडिव बेसिक एथ?"

HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); String encoded = Base64.getEncoder().encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8)); //Java 8 connection.setRequestProperty("Authorization", "Basic "+encoded); 

फिर कनेक्शन को सामान्य रूप में प्रयोग करें।

यदि आप जावा 7 या उससे कम का उपयोग कर रहे हैं, तो आपको आधार स्ट्रिंग को बेस64 में एन्कोड करने के लिए एक विधि की आवश्यकता होगी, जैसे:

 byte[] message = (username+":"+password).getBytes("UTF-8"); String encoded = javax.xml.bind.DatatypeConverter.printBase64Binary(message); 

हाँ, मूल ऑथ का उपयोग करने के लिए आपको बस यही करना है। अनुरोध संपत्ति सेट करने के लिए ऊपर दिए गए कोड को कनेक्शन खोलने के तुरंत बाद और इनपुट या आउटपुट स्ट्रीम प्राप्त करने से पहले किया जाना चाहिए।

संयोग से, यदि किसी और को उसी में चला जाता है, तो एंड्रॉइड समस्या भी मौजूद है यदि आप Base64.encodeBase64String() उपयोग करते हैं और Base64.encodeBase64String() करते हैं आपको Base64.encodeBase64() करने की आवश्यकता है और एक बाइट प्राप्त करें [] तो स्ट्रिंग का निर्माण करें।

यह मुझे पूरी तरह से पकड़ कर ले गया कि परिणाम उन दो विधियों के बीच समाप्त होने वाले रेखा के लिए अलग होगा।

आप बुनियादी auth कॉन्फ़िगर करने के लिए java.net.Authenticator का उपयोग कर सकते हैं। वैश्विक रूप से आपके आवेदन के द्वारा भेजे जाने वाले प्रत्येक अनुरोध के लिए देखें:

मुझे यह समस्या भी आ रही थी और अब मैंने इस समस्या का समाधान किया है। मेरा कोड है:

  URL url = new URL(stringUrl); String authStr = "MyAPIKey"+":"+"Password"; System.out.println("Original String is " + authStr); // encode data on your side using BASE64 byte[] bytesEncoded = Base64.encodeBase64(authStr .getBytes()); String authEncoded = new String(bytesEncoded); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty("Authorization", "Basic "+authEncoded); 

यह कई अन्य लोगों की मदद कर सकता है शुभकामनाएँ।

बेस 64 एन्कोडिंग समस्या के संबंध में, मुझे यह लाइब्रेरी मिली: http://sourceforge.net/projects/migbase64/

मैंने इसे पूरी तरह से संशोधित नहीं किया है लेकिन मैं इसे ऊपर दिखाए गए मूलभूत प्रमाणीकरण समाधान के लिए उपयोग कर रहा हूं (साथ ही छवि एन्कोडिंग / डिकोडिंग के लिए), और यह अच्छी तरह से काम करता है यह एक पैरामीटर प्रदान करता है कि क्या न्यूलाइन को शामिल किया जाए या नहीं।