我是Android的新用户,在我的应用中,我需要与https
建立连接以进行付款操作,以及我尝试建立连接时网页视图的当前状态。
我已经在网上查找了通过覆盖onReceivedSslError
方法加载https以忽略错误并继续进行的解决方案。所以,我已经这样做了。
这是我的网页视图获取其设置:
web = (WebView)findViewById(R.id.web);
// setting WebViewClient
web.setWebViewClient(new WebViewClientClass());
web.getSettings().setDomStorageEnabled(true);
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl(orderSheetUrl);
其中orderSheetUrl
是我的付款操作将用户带到的https网址。
以下是我的WebViewClient类:
private class WebViewClientClass extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("WebView", "onPageStarted " + url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("WebView", "in shouldOverrideUrlLoading");
view.loadUrl(url);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
Log.d("WebView", "onReceivedSslError");
handler.proceed(); // Ignore SSL certificate errors
}
@Override
public void onPageFinished(WebView view, String url) {
Log.d("WebView", "onPageFinished " + url);
}
}
这里的问题是我尝试加载链接,但在我的日志中发现只调用了onPageStarted
和onPageFinished
的日志。
这是我的日志:
12-13 17:06:31.760 8694-8694/? D/WebView: onPageStarted :"https://alpha-bill.payco.com/easyLogin/201512132004116802?inAppYn=Y"
12-13 17:06:31.760 8694-8694/? D/WebView: onPageFinished :"https://alpha-bill.payco.com/easyLogin/201512132004116802?inAppYn=Y"
12-13 17:06:31.790 8694-9927/? E/Adreno-ES20: <check_framebuffer_attachment:854>: Invalid texture format! Returning error!
12-13 17:06:31.790 8694-9927/? E/Adreno-ES20: <check_framebuffer_object_status:1237>: Framebuffer color attachment incomplete. Returning GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT!
12-13 17:06:31.800 8694-8694/? W/cr.BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 8694
12-13 17:06:31.810 8694-8694/? W/cr.BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 8694
12-13 17:06:32.180 8694-8795/? E/Adreno-ES20: <check_framebuffer_attachment:854>: Invalid texture format! Returning error!
12-13 17:06:32.180 8694-8795/? E/Adreno-ES20: <check_framebuffer_object_status:1237>: Framebuffer color attachment incomplete. Returning GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT!
我真的不明白为什么即使我访问以https开头的网址也未调用onReceivedSslError
方法,根据我的理解,这应该要求证书可以访问。
我是否在实施WebViewClient
时做错了什么?或者还有其他方法吗?在此先感谢您的帮助。
P.S。我的目标API是23,最小值是15.
答案 0 :(得分:2)
来自文档:
通知主机应用程序在加载资源时发生SSL错误。
那么为什么在没有错误时调用呢?