मैं एंड्रॉइड वेबव्यू में एसएसएल प्रमाणपत्र त्रुटियों को संभालने का एक उचित तरीका खोजने की कोशिश कर रहा हूं। मेरा लक्ष्य SSL प्रमाणपत्र त्रुटियों वाले पृष्ठों को लोड करने का तरीका प्रदान करना है, लेकिन उपयोगकर्ता को सुरक्षा चेतावनी के साथ URL लोड करने का प्रयास करने के बाद उसे पृष्ठ लोड करने का विकल्प चुनने दें।एंड्रॉइड वेबव्यू में सर्टिफिकेट त्रुटियों को संभालना और सर्टिफिकेट पियर्स को साफ़ करना
निकटतम समाधान मैं धागे में पाया निम्नलिखित के रूप में WebViewClient अधिभावी सलाह देते हैं:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) {
handler.proceed();
}
});
हालांकि इस मूल रूप से उपयोगकर्ता सहमति के बिना WebView में एसएसएल अक्षम करता है।
Android WebView SSL 'Security Warning'
Does the Web View on Android support SSL?
Android WebView not loading an HTTPS URL
android webview with client certificate
Web view shows blank/white page after loading URL when using WIFI in Android
:संदर्भ के लिए यहाँ धागे जहां मुझे लगता है कि समाधान कर रहे हैं
Unable to load a specific webpage on Android webview
WebView displays a blank view for certain links
Android WebView blocks redirect from https to http
Ignore ssl certificate requests in webview
मैं आगे चला गया और जो उपयोगकर्ता को संकेत देता एक अलग संस्करण लागू किया:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) {
//Showing a first confirmation dialog
AndroidUtils.showYesNoDialog(
//First confirmation message
"WARNING - THIS PAGE IS NOT SECURE! Are you sure you want to continue loading it?",
//First confirmation "YES" option runnable
new Runnable() {
@Override
public void run() {
//Showing a second confirmation dialog
AndroidUtils.showYesNoDialogWithResId(
//Second confirmation message
"You chose to load an unsecure page, are you sure you want to do that?",
//Second confirmation "YES" option runnable
new Runnable() {
@Override
public void run() {
//Disregard the error and proceed with the bad certificate anyways
handler.proceed();
}
},
//Second confirmation "NO" option runnable
new Runnable() {
@Override
public void run() {
//Cancel loading the page with that certificate error
handler.cancel();
}
}
);
}
},
//First confirmation "NO" option runnable
new Runnable() {
@Override
public void run() {
//Cancel loading the page with that certificate error
handler.cancel();
}
});
}
});
इस कार्यान्वयन उपयोगकर्ता पूछता है दो बार अगर एच ई पृष्ठ को लोड करना चाहता है, अगर वह दो बार कहता है, तो त्रुटि को नजरअंदाज कर दिया जाता है और पेज लोड होता है, अन्यथा पेज लोडिंग रद्द हो जाती है।
पहली बार प्रमाणपत्र त्रुटि लोड के साथ एक यूआरएल, WebViewClient.onReceivedSslError
कहा जाता है, लेकिन यदि प्रमाणपत्र त्रुटि और SslErrorHandler.proceed()
साथ उपयोगकर्ता आय कहा जाता है, निम्नलिखित समय उसी यूआरएल भार, WebViewClient.onReceivedSslError
फिर कभी नहीं कहा जाता है: केवल एप्लिकेशन की हत्या इस व्यवहार को रीसेट करता है।
मैं WebViewClient.onReceivedSslError
को व्यवस्थित रूप से बुलाया जाना चाहूंगा जब प्रमाण पत्र त्रुटि वाला यूआरएल लोड हो, केवल पहली बार नहीं। बाद SslErrorHandler.proceed()
बुलाया गया है
/** JAVADOC QUOTE: Clears the SSL preferences table stored in response to proceeding with SSL certificate errors.*/
webView.clearSslPreferences();
//Those other methods I tried out of despair just in case
webView.clearFormData();
webView.clearCache(true);
webView.clearHistory();
webView.clearMatches();
किसी को भी कैसे एक ही URL के लिए एक बार से WebView कॉल WebViewClient.onReceivedSslError
अधिक बनाने के लिए पता है, मैं सफलता के बिना उन तरीकों कॉल करने की कोशिश?
आपको कोई समाधान मिला है?> –
नहीं मुझे अभी तक कोई समाधान नहीं मिला है। – androidseb
@KingofMasses रात अपने देश में इतने लंबे समय लेने के लिए? बस मजाक कर, क्या आप कृपया पोस्ट कर सकते हैं? मैं इस ... – user2582318