Retrofit忽略Https安全验证

来源:互联网 发布:淘宝多少天默认收货 编辑:程序博客网 时间:2024/05/21 06:59

目前不知道Retrofit有哪个直接的api可以忽略https验证的

本方案通过设置Retrofit的client为OkHttp的Client

场景为内网测试服务器,采用Https方式,

英文网址:https://viksaaskool.wordpress.com/2015/01/12/ssl-android-and-retrofit-some-frustration-might-occur/

OkHttpClient client = new OkHttpClient();TrustManager[] trustManager = new TrustManager[]{new X509TrustManager() {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) throwsCertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) throwsCertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;    // 返回null}}};try {SSLContext sslContext = SSLContext.getInstance("SSL");sslContext.init(null, trustManager, new SecureRandom());SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();client.setSslSocketFactory(sslSocketFactory);client.setHostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {return hostname.contains("192.168.6.41");}});} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (KeyManagementException e) {e.printStackTrace();}Retrofit retrofit = new Retrofit.Builder().baseUrl(ApiManager.SERVICE_ENDPOINT).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).client(client).build();




0 0
原创粉丝点击