https访问http加载不出图片_webview加载https链接(终极解决方案,包括https链接加载http图片显示失败)...

前言:只要涉及到https,大家都会第一时间想到证书验证。当然,这是没问题的。如果有要求,这个证书验证是必须的。一般情况下,都是需要证书的(有证书毕竟安全些吗)

正常的解决办法:

重写类WebViewClient

第一种方法:

webView.setWebViewClient(new WebViewClient ()

@Override

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {

super.onReceivedSslError(view, handler, error);

}

});

说明:Android WebView组件加载网页发生证书认证错误时,会调用WebViewClient类的onReceivedSslError方法,在这个方法里,我们可以点击源码看到SslErrorHandler中有两个主要的方法可以调用

【1】cancel( )

停止加载问题页面

【2】proceed( )

忽略SSL证书错误,继续加载页面

如果我们不考虑证书安全,则可以直接这样写

webView.setWebViewClient(new WebViewClient ()

@Override

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {

handler.proceed();

}

});

当然了,既然用到了https,我们大部分时候都是为了网络安全问题

所以,可以定义一个类来验证证书安全,代码如下:

/**

* 时间 :2018/1/11 10:17

* 作者 :陈奇

* 作用 :证书验证的方法

*/

public class CertifiUtils {

// 验证证书

public static void OnCertificateOfVerification(final SslErrorHandler handler, String url) {

OkHttpClient.Builder builder = setCertificates(new OkHttpClient.Builder());

Request request = new Request.Builder().url(url)

.build();

builder.build().newCall(request).enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

BNLog.e("证书验证失败", e.getMessage());

handler.cancel();

}

@Override

public void onResponse(Call call, Response response) throws IOException {

BNLog.e("证书验证成功", response.body().string());

handler.proceed();

}

});

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值