android https 简书,关于Android http改为https
幸亏通过一个朋友找到了以下这个简便的开源库
然后用里面的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相关推荐
- android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容
简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...
- android 仿简书评论,Android仿简书搜索框效果的示例代码
前言 之前用简书的时候一直是在web端,后来下载了客户端,看到了搜索的那个动画,就尝试的去写了,没写之前感觉挺容易的,写了之后,就感觉里面还是有些要注意的东西的.话不多说,直接上图. Activity ...
- android spinner 简书,【Android】Spinner:下拉列表笔记
AdapterView使用方式都是类似的,都是通过适配器来适配数据源,然后将适配器设置到对应的AdapterView上进行显示 在Spinner中呈现自定义的一些属性值 a.在res-->val ...
- android计步器简书,自定义View-仿QQ运动步数进度效果
自定义View-仿QQ运动步数进度效果 一.写在前面 (1) 图一,仿QQ步数运行效果 (2) 图二,完整的圆效果 完整代码请看这 二.正文开始 (1)首先来个三部曲,自定义属性,布局设置,属性获取 ...
- Android仿简书、淘宝等APP View弹出效果
在用简书App的时候觉得这个View的弹出效果特别好,而且非常平滑. 先看看效果: 主要是scale,alpha,translation几个普通动画组合,这里不再分析. 实现效果图: 代码:https ...
- android jsoup简书,jsoup爬虫简书首页数据做个小Demo
昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固,比如java反射注解,知道一点就是说不出来,很尴尬... 生命不止,学习不止啊 之前那个项目 Q ...
- android仿简书编辑器,类似zine,简书的app移动编辑器-Light Seven
原标题:类似zine,简书的app移动编辑器-Light Seven 无论你是否从事文字编辑工作,我相信每个人都会接触到文字编辑.既然接触到文字编辑,顺理成章的就会接触到文字编辑的应用和软件. 在生活 ...
- android音乐播放器简书,打造 Android 网络音乐播放器 [2]
前言 在上一篇中,我们把播放器的基本播放功能实现了,今天我们就把基本的界面实现以下吧. 目标 界面的话没打算实现太复杂的,就做现在比较流行的 Drawer+Tab+ViewPager 这种界面.下面给 ...
- android 仿小红书标签,Android 仿小红书图片标签
TagViewGroup Android 仿小红书图片标签,实现了图片标签的动画,布局,水波纹,编辑等功能,还可以自定义 Tag.视频演示地址 This is a library of tags th ...
最新文章
- LSTM终获「正名」,IEEE 2021神经网络先驱奖授予LSTM提出者Sepp Hochreiter
- 为什么很多技术合伙人参与创业时会先谈钱?
- 音视频技术开发周刊 78期
- vue --- SPA模式的组件
- 动画演示 Delphi 2007 IDE 功能[3] - 修改属性
- JavaScript对象、JSON对象、JSON字符串的区别
- EntLib.com Forum / YAF 开源论坛--源码的目录结构(对分析代码很有帮助)
- Epson C1100报错“Service Req E511”的处理方法
- 大数据入门初学者需要学习的内容及学习路线详解
- bzoj1047-理想的正方形(二维单调队列)
- cvCreateTrackbar() 添加滚动条调节参数
- 【01】SylixOS下LWIP的实现---动态内存管理
- PDF编辑器中文版免费下载哪里可以下载?
- STM32 GD32脱机烧写器制作
- Linux日文教程,Ubuntu日语、法语输入法的设置
- PowerMock使用-Mock私有方法
- IP地址的获取—分析从连接WiFi到上网的全过程(二)
- 路由器经常出现断线现象解决对策在哪
- 项目国际化I18N多语言切换
- 分布式系统可用性和可靠性的区别,可用性如何计算,以及如何做到高可用和高可靠
热门文章
- source, ~/.bashrc, ~/.bash_profile详解
- 设计模式-结构型-装饰
- 基于3G网络的汽车防盗报警系统视频监控设计
- python作用域-Python之函数作用域
- 计算机二级vb和vba,读取本机硬件信息的VBA代码
- 使用object detection训练并识别自己的模型
- mysql 锁表查询和解锁操作
- Java 获得方法调用者名称
- [iOS] 封装倒计时(一句话调用,无内存泄漏)
- 面试官:你能告诉我一个请求过来,Spring MVC 是如何找到正确的 Controller 的?