我们使用WebView在我们的应用程序中加载paytm支付页面。在此过程中,我们面临Ssl证书错误。为了处理这个问题,我们在代码中添加了SslErrorHandler.proceed()。一切都很好。我试着发布这个apk来存储,但是这个应用程序被拒绝提及。
WebViewClient.onReceivedSslError处理程序的不安全实现
这是我的密码
fcweb.getSettings().setJavaScriptEnabled(true);
fcweb.getSettings().setDomStorageEnabled(true);
fcweb.setLongClickable(false);
fcweb.setHapticFeedbackEnabled(false);
CookieManager.getInstance().setAcceptCookie(true);
fcweb.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // Ignore SSL certificate errors
L.d("SSL Error received");
}
});备注:我不想显示任何关于错误的警告对话框。我该怎么做才能解决这个问题?
发布于 2017-01-20 11:22:13
并不总是强制使用handler.proceed();但是您也必须包括handler.cancel();这样用户就可以避免加载不安全的内容.。
要正确处理SSL证书验证,请更改代码,以便在服务器提供的证书满足您的期望时调用SslErrorHandler.proceed(),否则调用SslErrorHandler.cancel()。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.notification_error_ssl_cert_invalid);
builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
}
});
final AlertDialog dialog = builder.create();
dialog.show();
}https://stackoverflow.com/questions/41762401
复制相似问题