मैं एक Authenticator
का उपयोग कर और एक डिफ़ॉल्ट Authenticator
वस्तु इस तरह की स्थापना करके मूल प्रमाणीकरण के साथ एक HttpsUrlConnection
उपयोग कर रहा हूँ:एंड्रॉयड: बेसिक प्रमाणीकरण दोहराता के लिए प्रमाणक से HttpsURLConnection हमेशा के लिए जब पासवर्ड गलत है (401 प्रतिक्रिया पर)
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user", "userpass"
.toCharArray());
}
});
जब मैं अपनी वेब-सेवा तक पहुंचता हूं तो कनेक्शन प्रमाण पत्र प्राप्त करने के लिए मेरे getPasswordAuthentication()
विधि को कॉल करता है और इसे वेब-सर्वर पर भेजता है। जब तक पासवर्ड सही होता है तब तक यह ठीक काम करता है। :)
हालांकि, ऐसा हुआ कि किसी ने वेब-सर्वर पर मूल प्रमाणीकरण पासवर्ड बदल दिया और फिर मेरा अनुरोध वापस नहीं आया।
मैंने इसे डीबग किया और क्या होता है कि getInputStream()
पर मेरा कॉल कभी वापस नहीं आता है। HttpsUrlConnection
को 401 प्रतिक्रिया मिलती है और फिर भी वही प्रमाण-पत्र प्राप्त करके आंतरिक रूप से प्रतिक्रिया देती है। लेकिन चूंकि मैंने केवल एक उपयोगकर्ता और पासवर्ड प्रदान किया है, यह फिर से विफल हो जाएगा (और फिर ...)।
तो मेरा सवाल यह है कि: मैं इसे कैसे रोक सकता हूं और गलत पासवर्ड पर प्रतिक्रिया करने के लिए एक हुक कहां है (एक 401 प्रतिक्रिया)। इसलिए मैं एक उचित त्रुटि संदेश दिखा सकता हूं और अनुरोध रद्द कर सकता हूं?
1: MyOwnHttpConnection$3.getPasswordAuthentication() line: 99
2: Authenticator.requestPasswordAuthentication(InetAddress, int, String, String, String) line: 162
3: HttpsURLConnectionImpl$HttpsEngine(HttpURLConnectionImpl).getAuthorizationCredentials(String) line: 1205
4: HttpsURLConnectionImpl$HttpsEngine(HttpURLConnectionImpl).processAuthHeader(String, String) line: 1178
5: HttpsURLConnectionImpl$HttpsEngine(HttpURLConnectionImpl).processResponseHeaders() line: 1118
6: HttpsURLConnectionImpl$HttpsEngine(HttpURLConnectionImpl).retrieveResponse() line: 1044
7: HttpsURLConnectionImpl$HttpsEngine(HttpURLConnectionImpl).getInputStream() line: 523
8: HttpsURLConnectionImpl.getInputStream() line: 283
संभव डुप्लिकेट [एंड्रॉयड, HttpURLConnection और बुरे साख से निपटने] (http://stackoverflow.com/questions/7061211/android-httpurlconnection-and-handling- खराब प्रमाण-पत्र) – yanchenko