OKHttp的常用配置如配置Https证书,忽略Https证书,Cookie持久化
来源:互联网 发布:office网络弹窗 编辑:程序博客网 时间:2024/06/05 17:24
原文地址:http://www.jianshu.com/p/de83fbe9fcc7
Retrofit应该是目前最火的联网框架,但是内部还是使用的OKHttp,在这总结一下常用的配置。
- 做Cookie的持久化。 OKHttp3.0之后和之前做Cookie持久化有了点区别下面直接上代码:
2.添加Https证书 - 初始化SSLContext.cookieJar(new CookieJar() { private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>(); @Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { cookieStore.put(url.host(), cookies); } @Override public List<Cookie> loadForRequest(HttpUrl url) {List<Cookie> cookies = cookieStore.get(url.host()); return cookies != null ? cookies : new ArrayList<Cookie>(); } })
public static void setCard(InputStream certificate) {try { CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(null); String certificateAlias = Integer.toString(0); keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(certificate)); sslContext = SSLContext.getInstance("TLS"); final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); sslContext.init ( null, trustManagerFactory.getTrustManagers(), new SecureRandom() );} catch (CertificateException e) { e.printStackTrace();} catch (KeyStoreException e) {e.printStackTrace(); }catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); }catch (KeyManagementException e) { e.printStackTrace(); } }
- 通过构造者模式添加至OKHttpClient
3 . 忽略Https证书.sslSocketFactory(sslContext.getSocketFactory()) .hostnameVerifier(new HostnameVerifier() { @Overridepublic boolean verify(String hostname, SSLSession session) { return true; } })
最终关于整个Okhttp的配置模块:/** * 忽略所有https证书 */private void overlockCard() {final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { @Overridepublic void checkClientTrusted( java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { }@Override public void checkServerTrusted( java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { }@Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { X509Certificate[] x509Certificates = new X509Certificate[0]; return x509Certificates; } }};try {sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); } catch (Exception e) {LogUtil.e("ssl出现异常"); } }
private static final String CER_NAME = ""; //https签名证书nameif (StringUtils.isEmpty(CER_NAME)) {//忽略所有证书 overlockCard(); } else {//选择证书 try { setCard(UIUtils.getContext().getAssets().open(CER_NAME)); } catch (IOException e) { e.printStackTrace(); } }okHttpClient = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .sslSocketFactory(sslContext.getSocketFactory()) .hostnameVerifier(new HostnameVerifier() { @Overridepublic boolean verify(String hostname, SSLSession session) { return true; } }) .cookieJar(new CookieJar() { private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>(); @Overridepublic void saveFromResponse(HttpUrl url, List<Cookie> cookies) { cookieStore.put(url.host(), cookies); } @Overridepublic List<Cookie> loadForRequest(HttpUrl url) {List<Cookie> cookies = cookieStore.get(url.host()); return cookies != null ? cookies : new ArrayList<Cookie>(); } }) .build();
- 通过构造者模式添加至OKHttpClient
阅读全文
0 0
- OKHttp的常用配置如配置Https证书,忽略Https证书,Cookie持久化
- OKHttp的常用配置如配置Https证书,忽略Https证书,Cookie持久化
- 使用okhttp忽略https的证书认证
- https证书的配置
- okhttp使用https忽略证书验证
- okhttp使用https忽略证书验证
- nginx配置https证书
- tomcat https 证书配置
- 配置https证书
- tomcat配置https证书
- CA证书 配置 https
- Android https ssl证书配置(使用okhttp)
- okHttp 使用HTTPS证书
- https 忽略证书
- httpclient https忽略证书
- loadrunner中对https证书的配置
- loadrunner中对https证书的配置
- ios 配置https对证书的要求
- 转:Unity延时功能的几种实现
- 博客-重新出发
- 字符串分割,你会吗?
- VS Windows服务如何调试?
- 121. Best Time to Buy and Sell Stock
- OKHttp的常用配置如配置Https证书,忽略Https证书,Cookie持久化
- 刷清橙OJ--A1098. 加法分解
- 数组
- C++学习(49)
- 关于导入 cardview 库 ?android:attr/colorBackgroundFloating 报错的问题
- Web Service配置安全
- jQuery easyUI查询多一个GET方式的请求BUG
- webuploader+springmvc实现多文件上传(html+js+css原创,后台代码借鉴)
- Java实现-单例