下面列出了android.net.http.SslError#getPrimaryError ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) {
int primaryError = error.getPrimaryError();
String url = error.getUrl();
SslCertificate cert = error.getCertificate();
mLogger.warning("onReceivedSslError: error = " + primaryError
+ ", url = " + url + ", certificate = " + cert);
if (primaryError == SslError.SSL_UNTRUSTED && url != null && cert != null) {
SslCertificate.DName subjectName = cert.getIssuedTo();
if (subjectName != null
&& "localhost".equals(subjectName.getCName())
&& url.startsWith("https://localhost") ) {
handler.proceed();
mLogger.warning("SSL Proceeded: url = " + url);
return;
}
}
handler.cancel();
mLogger.severe("SSL Canceled: url = " + url);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
Date today = new Date();
today.setTime(System.currentTimeMillis());
if(error.getPrimaryError() == SslError.SSL_DATE_INVALID ||
error.getPrimaryError() == SslError.SSL_IDMISMATCH ||
error.getPrimaryError() == SslError.SSL_INVALID ||
error.getPrimaryError() == SslError.SSL_UNTRUSTED) {
handler.cancel();
}
else {
handler.proceed();
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
String host = uri.getHost();
int errno = error.getPrimaryError();
if (host.equals("androidobservatory.org")
&& (errno == SslError.SSL_EXPIRED || errno == SslError.SSL_UNTRUSTED)) {
handler.proceed();
} else {
super.onReceivedSslError(view, handler, error);
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
try {
JSONObject obj = new JSONObject();
obj.put("type", LOAD_ERROR_EVENT);
obj.put("url", error.getUrl());
obj.put("code", 0);
obj.put("sslerror", error.getPrimaryError());
String message;
switch (error.getPrimaryError()) {
case SslError.SSL_DATE_INVALID:
message = "The date of the certificate is invalid";
break;
case SslError.SSL_EXPIRED:
message = "The certificate has expired";
break;
case SslError.SSL_IDMISMATCH:
message = "Hostname mismatch";
break;
default:
case SslError.SSL_INVALID:
message = "A generic error occurred";
break;
case SslError.SSL_NOTYETVALID:
message = "The certificate is not yet valid";
break;
case SslError.SSL_UNTRUSTED:
message = "The certificate authority is not trusted";
break;
}
obj.put("message", message);
sendUpdate(obj, true, PluginResult.Status.ERROR);
} catch (JSONException ex) {
LOG.d(LOG_TAG, "Should never happen");
}
handler.cancel();
}