我在Android上使用原生WebView时遇到问题。我需要使用SSL客户端证书对站点进行身份验证。 Android WebView似乎不支持这一点。作为一种解决方法,我使用了WebView的修改版本:
https://github.com/yonekawa/webview-with-client-certificate
修改后的WebView通过将正确配置的SslSocketFactory注入标准Android WebView来工作。这适用于Android 2.x设备。但是,使用Android 4 ICS它不再起作用了。 SslSocketFactory仍在ICS中,但似乎它不再使用了。
所以我的问题是:有没有人成功在ICS上配置Android WebView,以便它可以使用客户端证书?或者有其他选择吗?
我已经尝试过:
将SSL客户端证书导入Android密钥库,只使用WebView而不进行任何修改。这不起作用,客户端证书不随请求一起发送。但它可以在本机浏览器中使用。
使用HttpClient自己创建SSL连接,获取站点的HTML并将其交给WebView。这基本上有效,但是我需要拦截WebView发出的所有请求并自己处理它们。但是,WebView不提供POST请求的数据,这使得这种方法对我来说无法使用。
答案 0 :(得分:4)
我认为你想要的是覆盖以下隐藏方法:
public void onReceivedClientCertRequest(WebView view,
ClientCertRequestHandler handler, String host_and_port) {
默认情况下,这将取消请求。
我在此示例后面使用此方法来使用隐藏的API: http://devmaze.wordpress.com/2011/01/19/using-com-android-internal-part-5-summary-and-example/
对不起,迟到了。只是偶然发现了你的问题...... 希望它仍然有帮助。