我们通常创建client的方法使用的是这种,但有可能导致证书不受信任,访问不了的问题,比如调试运行时会报如下错误
OKHTTP javax.ssl.SSLHandshakeException
这时候我们不要着急,新建一个工具包,在包里新建如下类,类名随便取就行
unity.utils;import okhttp3.OkHttpClient;import javax.ssl.*;/*** 处理证书不受信任的问题*/
public class OkHttpSSL {//okHttp3添加信任所有证书public static OkHttpClient getUnsafeOkHttpClient() {try {final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[]{};}}};final SSLContext sslContext = Instance("SSL");sslContext.init(null, trustAllCerts, new java.security.SecureRandom());final javax.ssl.SSLSocketFactory sslSocketFactory = SocketFactory();OkHttpClient.Builder builder = new OkHttpClient.Builder();builder.sslSocketFactory(sslSocketFactory);builder.hostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {return true;}});return builder.build();} catch (Exception e) {throw new RuntimeException(e);}}
}
紧接着我们把之前创建client的方法替换为
OkHttpClient client = UnsafeOkHttpClient();
再次运行就不会报错了。
感谢此大佬@哥哥是欧巴Vitory
本文发布于:2024-02-02 11:16:39,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170684379843433.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |