HttpClient

KeyStore keyStore;
URI url = null;
HttpGet req = null;
try{//获取asset文件夹下的证书AssetManager am = mContext.getAssets();InputStream ins = am.open("my.crt"); //证书格式转换 IE 工具->internet->内容->证书
   try {//读取证书

      CertificateFactory cerFactory = CertificateFactory.getInstance("X.509");  //证书工厂。此处指明证书的类型 

     Certificate cer = cerFactory.generateCertificate(ins);//创建一个证书库,并将证书导入证书库

      keyStore = KeyStore.getInstance("PKCS12", "BC");   //2  http://www.csdn.net/article/2015-01-06/2823434keyStore.load(null, null);keyStore.setCertificateEntry("trust", cer);} finally {ins.close();}//把咱的证书库作为信任证书库

   SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore);Scheme sch = new Scheme("https", socketFactory, 443);//完工

   HttpClient mHttpClient = new DefaultHttpClient();mHttpClient.getConnectionManager().getSchemeRegistry().register(sch);url = new URI(gm.url+gm.param);//url = new URI(gm.url+gm.param);
   req = new HttpGet(url);HttpGet requestGet = new HttpGet(url);HttpResponse httpResponse = mHttpClient.execute(requestGet);if (httpResponse.getStatusLine().getStatusCode() == 200) {HttpEntity httpEntity = httpResponse.getEntity();result = EntityUtils.toString(httpEntity);result = result.replaceAll("\r", "");}
}catch (Exception e){}

HttpsURLConnection

CertificateFactory cf = CertificateFactory.getInstance("X.509");
// From
// https://www.washington.edu/itconnect/security/ca/load-der.crt
InputStream caInput = mContext.getAssets().open("_.lianluo.com_bundle.crt");
//InputStream caInput = mContext.getAssets().open("nginx.crt");

Certificate ca;
try {ca = cf.generateCertificate(caInput);
} finally {caInput.close();
}// Create a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);// Create a TrustManager that trusts the CAs in our KeyStore
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);// Create an SSLContext that uses our TrustManager
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);URL url = new URL(path);
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
//
urlConnection.setConnectTimeout(5 * 1000);
urlConnection.setRequestMethod("GET");
//
urlConnection.setSSLSocketFactory(context.getSocketFactory());InputStream in = urlConnection.getInputStream();if(urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK){return readStream(in);
}

Android HTTPS请求总结相关推荐

  1. android https请求证书过滤白名单,Android处理https请求的证书问题

    android中对部分站点发送https请求会报错,原因是该站点的证书时自定义的,而非官方的,android手机不信任其证书,为了解决这个问题,一般有两种解决方案 忽略证书验证 下载证书到本地,添加到 ...

  2. Android 7.0解决抓取不到https请求的问题

    Android 7.0解决抓取不到https请求的问题 参考文章: (1)Android 7.0解决抓取不到https请求的问题 (2)https://www.cnblogs.com/meitian/ ...

  3. Android 使用自带的HttpClient进行https请求出现403的解决过程记录

    2019独角兽企业重金招聘Python工程师标准>>> 出现的过程 最近在用程序模拟一个web站的https登录,然后进行一些后续操作的小玩意.先使用java程序写测试代码,测试通过 ...

  4. android 监听本机网络请求_fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决...

    一.HTTP协议和HTTPS协议. (1) HTTPS协议=HTTP协议+SSL协议,默认端口:443 (2) HTTP协议(HyperText Transfer Protocol):超文本传输协议. ...

  5. Android——自建CA证书,实现https请求

    Android 使用https 协议请求客户端 server端操作 自己创建 CA 证书 拿自建CA 证书创建 server 端证书 创建 https 服务 Android客户端操作 创建项目并引入相 ...

  6. 在Mac下使用Charles抓取Android 7.0以上的Https请求

    文章目录 一.Charles 设置 1. 第一步 2. 第二步 3. 第三步 3. 第四步开启SSL代理功能 二.手机安装证书 三.APP 网络安全配置 四.另一种抓包方式   因为开发需求,需要抓取 ...

  7. 青花瓷抓包工具如何对Android手机https请求抓包及华为手机安装Charles证书方法详解!

    网上搜索了很多文档,这两篇是写的比较全面的,整个流程看完,你就会安装使用了! 参考:windows下使用Charles工具如何对android手机https请求进行抓包 参考:Android安装Cha ...

  8. 【Fiddler学习】Fiddler抓包HTTPS请求和手机抓包

    一.安装Fiddler 百度搜索:Fiddler抓包工具,然后安装即可. 然后打开Fiddler工具,打开浏览器随意输入任何网址,就可以在Fiddler看到抓包信息. 但是:默认情况下,Fiddler ...

  9. 深入理解 Android Https

    前言 大家都知道https相比http增加的是安全性. 怎么增加安全性呢? 就是加密和解密步骤. 下面来详细谈谈对https的理解和在Android中的使用. 两种加密 加密方式分两种,对称加密和非对 ...

最新文章

  1. flask 配置文件
  2. python 调用linux命令-Python调用Linux bash命令
  3. Spring及SpringBoot @Async配置步骤及注意事项
  4. python测试开发实战_《python测试开发实战》基于pytest基础部分实例1-Hello
  5. linux-vim-环境永久-多窗口操作
  6. 彩扩机项目--死区,另辟蹊径使用即将导通的一路的电压得能量对需要关闭的一路的电容进行放电...
  7. 还在手写 Nginx 配置?试试这款可视化配置神器,太强了!
  8. java xssfworkbook_java - poi(XSSFWorkbook)读取excel(.xlsx)文件
  9. springboot毕业设计 基于springboot房产中介预约看房系统毕业设计设计与实现参考
  10. 如何利用信息差赚钱?分享二个案例给你!
  11. AndroidStudio制作登录和注册功能的实现,界面的布局介绍
  12. 3.Elasticsearch-查询的多种方式
  13. 解决台式机前耳机插孔没有声音
  14. 用python实现的钉钉后台开发
  15. 优秀广告设计作品常用的几大设计思维
  16. 计算机专业课题 结题报告,《有效技能研究与实践》课题结题报告
  17. [分割一切!] SegmentAnything真的太强了
  18. camera驱动电源配置_[ROS] 安装 USB Camera 驱动并调用
  19. 使用A*算法求最短路径
  20. 三国志战略版:Daniel_袁术分析

热门文章

  1. 同一矢量和张量在不同坐标系下的转换
  2. 刷题记录:牛客NC14662小咪买东西NC15446wyh的物品
  3. 我们怎样识别图片上的文字?图片识别文字软件有哪些?
  4. Eclipse 使用的装逼神器之 Eclipse 全屏模式
  5. 挨踢部落直播课堂第十期:亿级数据量高并发下数据库水平切分的结构设计
  6. app支付宝支付java后台_支付宝app支付java后台流程demo
  7. UNITY3D 动作游戏开发教程《怪物猎人》
  8. 读取中文时'utf-8' codec can't decode byte 0xa1 in position 0: invalid start byte
  9. 基于TCP/IP的套接字服务器端和客户端编程
  10. PMBOK项目管理实践