OKHttp的常用配置如配置Https证书,忽略Https证书,Cookie持久化
2017-06-21 09:37
501 查看
原文地址:http://www.jianshu.com/p/de83fbe9fcc7
Retrofit应该是目前最火的联网框架,但是内部还是使用的OKHttp,在这总结一下常用的配置。
做Cookie的持久化。 OKHttp3.0之后和之前做Cookie持久化有了点区别下面直接上代码:
2.添加Https证书 - 初始化SSLContext
通过构造者模式添加至OKHttpClient
3 . 忽略Https证书
最终关于整个Okhttp的配置模块:
Retrofit应该是目前最火的联网框架,但是内部还是使用的OKHttp,在这总结一下常用的配置。
做Cookie的持久化。 OKHttp3.0之后和之前做Cookie持久化有了点区别下面直接上代码:
.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>(); } })
2.添加Https证书 - 初始化SSLContext
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
.sslSocketFactory(sslContext.getSocketFactory()) .hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } })
3 . 忽略Https证书
/** * 忽略所有https证书 */ private void overlockCard() { final TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { @Override public 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出现异常"); } }
最终关于整个Okhttp的配置模块:
private static final String CER_NAME = ""; //https签名证书name
if (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() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }) .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>(); } }) .build();
相关文章推荐
- OKHttp的常用配置如配置Https证书,忽略Https证书,Cookie持久化
- Okhttp3 配置Https访问(使用PKCS12)证书
- OkHttp3 配置Https证书请求
- okhttp网络框架的https协议之忽略证书验证的登录实例
- okhttp3.0忽略https证书
- Retrofit+OKHttp忽略https证书验证
- 使用okhttp忽略https的证书认证
- Android okhttp3.0忽略https证书的方法
- okhttp使用https忽略证书验证
- OKHttp HTTPS 请求支持所有Https服务器 证书验证忽略客户端证书,(3)
- okhttp使用https忽略证书验证
- Centos6.3下Apache配置https证书访问
- keytool+tomcat配置HTTPS双向证书认证
- 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
- 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
- 【Android Trick 2】HTTPS请求忽略证书
- 在s2sh+tomcat下的,keytool+tomcat配置HTTPS双向证书认证
- Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
- 常用的比对忽略文件配置(2012/12/06)
- keytool+tomcat配置HTTPS双向证书认证