幸亏通过一个朋友找到了以下这个简便的开源库

然后用里面的SSLUtil,10分钟就解决了。

实现自签名SSL证书

1.访问以上开源库网址下载SSLUtil

2.把服务器生成的自签名证书cer文件放到在assets目录下,这里以demo.cer做示范

3.初始化SSLSocketFactory

在http请求类的constructor中添加以下代码,这里以HttpRequest做示范

socketFactory = SSLUtil.getSSLSocketFactory(context.getAssets().open("demo.cer"));

4.添加信任https证书

在new OKHttpClient后添加以下代码

if (url.startsWith("https://") && socketFactory != null) {

client.setSslSocketFactory(socketFactory);

}

以上这几步就是全部步骤了,如果你还是觉得麻烦,推荐使用Android-ZBLibray这个Android快速开发框架,里面自签名已全部封装好,只需替换下demo.cer文件即可。

Android快速开发框架-ZBLibrary 源码下载地址如下:

importjava.io.IOException;

importjava.io.InputStream;

importjava.security.KeyStore;

importjava.security.KeyStoreException;

importjava.security.NoSuchAlgorithmException;

importjava.security.SecureRandom;

importjava.security.UnrecoverableKeyException;

importjava.security.cert.CertificateException;

importjava.security.cert.CertificateFactory;

importjavax.net.ssl.KeyManager;

importjavax.net.ssl.KeyManagerFactory;

importjavax.net.ssl.SSLContext;

importjavax.net.ssl.SSLSocketFactory;

importjavax.net.ssl.TrustManagerFactory;

/**

* Https 证书工具类

* User:lizhangqu(513163535@qq.com)

* Date:2015-09-02

* Time: 12:52

*/

publicclassSSLUtil{

//使用命令keytool -printcert -rfc -file srca.cer 导出证书为字符串,然后将字符串转换为输入流,如果使用的是okhttp可以直接使用new Buffer().writeUtf8(s).inputStream()

/**

* 返回SSLSocketFactory

*

* @param certificates 证书的输入流

* @return SSLSocketFactory

*/

publicstaticSSLSocketFactorygetSSLSocketFactory(InputStream...certificates) {

returngetSSLSocketFactory(null,certificates);

}

/**

* 双向认证

* @param keyManagers KeyManager[]

* @param certificates 证书的输入流

* @return SSLSocketFactory

*/

publicstaticSSLSocketFactorygetSSLSocketFactory(KeyManager[]keyManagers,InputStream...certificates) {

try{

CertificateFactorycertificateFactory=CertificateFactory.getInstance("X.509");

KeyStorekeyStore=KeyStore.getInstance(KeyStore.getDefaultType());

keyStore.load(null);

intindex=0;

for(InputStreamcertificate:certificates) {

StringcertificateAlias=Integer.toString(index++);

keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(certificate));

try{

if(certificate!=null)

certificate.close();

}catch(IOExceptione) {

}

}

SSLContextsslContext=SSLContext.getInstance("TLS");

TrustManagerFactorytrustManagerFactory=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

trustManagerFactory.init(keyStore);

sslContext.init(keyManagers, trustManagerFactory.getTrustManagers(),newSecureRandom());

SSLSocketFactorysocketFactory=sslContext.getSocketFactory();

returnsocketFactory;

}catch(Exceptione) {

e.printStackTrace();

}

returnnull;

}

/**

* 获得双向认证所需的参数

* @param bks bks证书的输入流

* @param keystorePass 秘钥

* @return KeyManager[]对象

*/

publicstaticKeyManager[]getKeyManagers(InputStreambks,StringkeystorePass) {

KeyStoreclientKeyStore=null;

try{

clientKeyStore=KeyStore.getInstance("BKS");

clientKeyStore.load(bks, keystorePass.toCharArray());

KeyManagerFactorykeyManagerFactory=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

keyManagerFactory.init(clientKeyStore, keystorePass.toCharArray());

KeyManager[] keyManagers=keyManagerFactory.getKeyManagers();

returnkeyManagers;

}catch(KeyStoreExceptione) {

e.printStackTrace();

}catch(UnrecoverableKeyExceptione) {

e.printStackTrace();

}catch(CertificateExceptione) {

e.printStackTrace();

}catch(NoSuchAlgorithmExceptione) {

e.printStackTrace();

}catch(IOExceptione) {

e.printStackTrace();

}

returnnull;

}

}

android https 简书,关于Android http改为https相关推荐

  1. android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容

    简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...

  2. android 仿简书评论,Android仿简书搜索框效果的示例代码

    前言 之前用简书的时候一直是在web端,后来下载了客户端,看到了搜索的那个动画,就尝试的去写了,没写之前感觉挺容易的,写了之后,就感觉里面还是有些要注意的东西的.话不多说,直接上图. Activity ...

  3. android spinner 简书,【Android】Spinner:下拉列表笔记

    AdapterView使用方式都是类似的,都是通过适配器来适配数据源,然后将适配器设置到对应的AdapterView上进行显示 在Spinner中呈现自定义的一些属性值 a.在res-->val ...

  4. android计步器简书,自定义View-仿QQ运动步数进度效果

    自定义View-仿QQ运动步数进度效果 一.写在前面 (1) 图一,仿QQ步数运行效果 (2) 图二,完整的圆效果 完整代码请看这 二.正文开始 (1)首先来个三部曲,自定义属性,布局设置,属性获取 ...

  5. Android仿简书、淘宝等APP View弹出效果

    在用简书App的时候觉得这个View的弹出效果特别好,而且非常平滑. 先看看效果: 主要是scale,alpha,translation几个普通动画组合,这里不再分析. 实现效果图: 代码:https ...

  6. android jsoup简书,jsoup爬虫简书首页数据做个小Demo

    昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固,比如java反射注解,知道一点就是说不出来,很尴尬... 生命不止,学习不止啊 之前那个项目 Q ...

  7. android仿简书编辑器,类似zine,简书的app移动编辑器-Light Seven

    原标题:类似zine,简书的app移动编辑器-Light Seven 无论你是否从事文字编辑工作,我相信每个人都会接触到文字编辑.既然接触到文字编辑,顺理成章的就会接触到文字编辑的应用和软件. 在生活 ...

  8. android音乐播放器简书,打造 Android 网络音乐播放器 [2]

    前言 在上一篇中,我们把播放器的基本播放功能实现了,今天我们就把基本的界面实现以下吧. 目标 界面的话没打算实现太复杂的,就做现在比较流行的 Drawer+Tab+ViewPager 这种界面.下面给 ...

  9. android 仿小红书标签,Android 仿小红书图片标签

    TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 This is a library of tags th ...

最新文章

  1. LSTM终获「正名」,IEEE 2021神经网络先驱奖授予LSTM提出者Sepp Hochreiter
  2. 为什么很多技术合伙人参与创业时会先谈钱?
  3. 音视频技术开发周刊 78期
  4. vue --- SPA模式的组件
  5. 动画演示 Delphi 2007 IDE 功能[3] - 修改属性
  6. JavaScript对象、JSON对象、JSON字符串的区别
  7. EntLib.com Forum / YAF 开源论坛--源码的目录结构(对分析代码很有帮助)
  8. Epson C1100报错“Service Req E511”的处理方法
  9. 大数据入门初学者需要学习的内容及学习路线详解
  10. bzoj1047-理想的正方形(二维单调队列)
  11. cvCreateTrackbar() 添加滚动条调节参数
  12. 【01】SylixOS下LWIP的实现---动态内存管理
  13. PDF编辑器中文版免费下载哪里可以下载?
  14. STM32 GD32脱机烧写器制作
  15. Linux日文教程,Ubuntu日语、法语输入法的设置
  16. PowerMock使用-Mock私有方法
  17. IP地址的获取—分析从连接WiFi到上网的全过程(二)
  18. 路由器经常出现断线现象解决对策在哪
  19. 项目国际化I18N多语言切换
  20. 分布式系统可用性和可靠性的区别,可用性如何计算,以及如何做到高可用和高可靠

热门文章

  1. source, ~/.bashrc, ~/.bash_profile详解
  2. 设计模式-结构型-装饰
  3. 基于3G网络的汽车防盗报警系统视频监控设计
  4. python作用域-Python之函数作用域
  5. 计算机二级vb和vba,读取本机硬件信息的VBA代码
  6. 使用object detection训练并识别自己的模型
  7. mysql 锁表查询和解锁操作
  8. Java 获得方法调用者名称
  9. [iOS] 封装倒计时(一句话调用,无内存泄漏)
  10. 面试官:你能告诉我一个请求过来,Spring MVC 是如何找到正确的 Controller 的?