我已将WebViewClient实现附加到WebView。
appView.setWebViewClient(new AppViewClient());
调用我的onReceivedSslError
和onReceivedError
实施,除了Mixed Content
错误外,其他所有预期错误。
我对两种方法的实施:
Log.i(TAG, "Error Cought");
正如我所说,除Mixed Content
错误外,他们会遇到各种错误。我的请求在没有调用这些方法的情况下被阻止。
答案 0 :(得分:-1)
您使用的是哪个API版本?
默认情况下,MIX CONTENT
被允许在21之前。
您可以尝试在网络视图中添加此设置:
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
对于低于21的API级别:
try {
Method m = WebSettings.class.getMethod("setMixedContentMode", int.class);
if ( m != null ) {
m.invoke(webView.getSettings(), 1); //MIXED_CONTENT_NEVER_ALLOW
}
}
catch (Exception ex) {
}
很高兴知道您已经了解了MixedContentMode :)我可以 建议尝试两件事。
myWebView.setWebChromeClient(new WebChromeClient() {
public void onConsoleMessage(String message, int lineNumber, String sourceID) {
Log.d("MyApplication", message + " -- From line "
+ lineNumber + " of "
+ sourceID);
}
});
拦截请求并检查网址。检查source code中的WebActivity实施。
mWebView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
WebResourceRequest request) {
String url = request.getUrl().toString();
if (!URLUtil.isHttpsUrl(url)) {
Logger.loge("Secure connection required, but insecure URL requested "
+ "explicitly, or as a part of the page.");
return createNewSecurityErrorResponse();
}
return super.shouldInterceptRequest(view, request);
}
});
private WebResourceResponse createNewSecurityErrorResponse() {
WebResourceResponse response = new WebResourceResponse("text/plain", "UTF-8", null);
response.setStatusCodeAndReasonPhrase(HTTP_FORBIDDEN, "Secure connection required");
return response;
}