android https通过载入pfx证书获取数据
直接给代码吧。研究了几天才搞定......
public static final String CLIENT_KET_PASSWORD = "Ku6OpqKDfN4=305790"; //public static String getNewHttpClient(String url){try{// KeyStore trustStore = KeyStore.getInstance("PKCS12", "BC");// trustStore// .load(PcPostApplication.getInstance().getAssets()// .open("abc.pfx"), CLIENT_KET_PASSWORD.toCharArray());SSLSocketFactory sf =new SSLSocketFactoryEx(AppConfig.mKeyStore,AppConfig.CERTFILE_PASSWORD.toCharArray());sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);HttpParams params = new BasicHttpParams();HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);SchemeRegistry registry = new SchemeRegistry();registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));registry.register(new Scheme("https", sf, 443));HttpClient client = null;String msg = "";try{ClientConnectionManager ccm =new ThreadSafeClientConnManager(params, registry);client = new DefaultHttpClient(ccm, params);HttpGet hg = new HttpGet(url);HttpResponse response = client.execute(hg);HttpEntity entity = response.getEntity();if (entity != null){InputStream instreams = entity.getContent();msg = convertStreamToString(instreams);}return msg;}catch (Exception e){// TODO Auto-generated catch blocke.printStackTrace();}}catch (Exception e){e.printStackTrace();}return "";}public static String convertStreamToString(InputStream is){BufferedReader reader = new BufferedReader(new InputStreamReader(is));StringBuilder sb = new StringBuilder();String line = "";try{while ((line = reader.readLine()) != null){sb.append(line + "\n");}}catch (IOException e){e.printStackTrace();}finally{try{is.close();}catch (IOException e){e.printStackTrace();}}return sb.toString();}
上面的载入证书并请求,可是在这须要注意一个问题SSLSocketFactory须要自己定义,看以下自己定义的代码:
public class SSLSocketFactoryEx extends SSLSocketFactory
{SSLContext sslContext = SSLContext.getInstance("TLS");public SSLSocketFactoryEx(KeyStore truststore, char[] arry)throws NoSuchAlgorithmException, KeyManagementException,KeyStoreException, UnrecoverableKeyException{super(truststore);KeyManagerFactory localKeyManagerFactory =KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());localKeyManagerFactory.init(truststore, arry);KeyManager[] arrayOfKeyManager =localKeyManagerFactory.getKeyManagers();TrustManager tm = new X509TrustManager(){@Overridepublic X509Certificate[] getAcceptedIssuers(){return null;}@Overridepublic void checkServerTrusted(X509Certificate[] chain,String authType) throws CertificateException{}@Overridepublic void checkClientTrusted(X509Certificate[] chain,String authType) throws CertificateException{}};sslContext.init(arrayOfKeyManager, new TrustManager[] { tm },new java.security.SecureRandom());}@Overridepublic Socket createSocket(Socket socket, String host, int port,boolean autoClose) throws IOException, UnknownHostException{return sslContext.getSocketFactory().createSocket(socket, host, port,autoClose);}@Overridepublic Socket createSocket() throws IOException{return sslContext.getSocketFactory().createSocket();}
}
由于是双向握手,那个sslcontext不能初始化为空.....问题攻克了......
转载于:https://www.cnblogs.com/blfshiye/p/5096605.html
android https通过载入pfx证书获取数据相关推荐
- android与OneNET云平台的获取数据与发送数据
这篇文章对于大学学生来说应该是一个福利,因为可能跟你的毕业设计相关联. 1.GET 获取云平台的数据 private static final String DeviceID = "7154 ...
- Android Camera2 相机预览、获取数据
Camera2简要说明 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2),大幅提高了A ...
- Android开发 Intent传递参数,获取数据为null
android开发 Activity通过Intent传递参数,获取失败的原因 启动一个有返回值的activity (MapActivity) Intent intent = new Intent(Up ...
- 实现android多页面跳转,获取数据操作
准备工具:安卓开发工具 实现页面效果: 1.第一页面:要求停留三秒跳转第二页面 2.第二页面,要求:获取输入的数据点击确定按钮跳转第三页面并数据传入第三页面 3.第三页面:要求:接收第二页面数据显示在 ...
- android设备连接蓝牙扫描枪获取数据
第一步,开启连接 首先要开启蓝牙并且找到蓝牙扫描枪连接,在自己的应用中添加权限 <uses-permission android:name="android.permission.BL ...
- Android https 自签名和CA证书验证(基于OkHttp)
Android HTTPS自签名和CA证书验证(基于OkHttp) HTTPS介绍 CA证书 自签名证书 问题描述 域名校验 OkHttp设置 总结 HTTPS介绍 HTTPS是一种通过计算机网络进行 ...
- 从cer和pfx证书文件获取公、私钥
其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...
- ssl证书获取与tomcat和nginx设置https
文章目录 1 SSL证书获取 第1步 进入 域名 点击 开启 SSL证书 第2步 选择证书类型 第3步 确认部署证书 2 下载安装 https 2.1 Tomcat 安装 第1步 新建 cert文件夹 ...
- android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据
我是Android开发的新手,我正在尝试构建一个ListView,它使用gson从Web服务获取数据.我有一个模型类,一个列表类,一个适配器类和活动类. 该列表工作正常,它获得了数据,现在我想将OnI ...
最新文章
- 反编译android的apk
- leetcode 54. 螺旋矩阵
- 如何删除空文件夹Java_JAVA实现将磁盘中所有空文件夹进行删除的代码
- 为什么onenote一直在加载_OneNote:科研笔记独一无二的无敌利器
- 命令点无效怎么处理_CAD执行修改命令,你试过重复选择对象吗?
- LAMP架构,纯文本作品
- 城市运行一网统管_【宣传活动】持续开展城市运行“一网统管”建设宣传活动...
- 1.13 编程基础之综合应用 46 八进制到十进制 python
- 求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)
- 第四范式完成超10亿元C轮融资,估值12亿美元
- 64位Eclipse运行时提示“Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll”的一个解决方案
- Android之Adapter总结
- GDUFE ACM-1096
- 携程合体去哪儿,与途牛度假旅游市场争高下
- Vue + ElementUI el-input无法输入、修改、删除的问题
- 针式打印机保养方法汇总
- 利用Excel宏中文转拼音方法
- Python学习路线,Python教程,Python入门,Python自学课程,Python学习网站
- ps更换证件照的背景色
- mysql 创建外键语句_sql创建外键语句
热门文章
- 对于glut和freeglut的一点比较和在VS2013上的配置问题
- 第 8 天 多线程与多进程
- 如何查看windows xp系统的位数?
- bootstrap table相关操作
- mysql 自然排序_如何在mysql中实现自然排序
- visual stdio打开之后与屏幕尺寸不匹配_柔和点亮桌面,让眼睛更舒服,雷神屏幕挂灯L1体验...
- (70)FPGA模块调用(system Verilog调用system Verilog)
- (46)FPGA面试题FPGA内部结构及资源
- FPGA状态机跑飞原因分析
- openssl paho.mqtt交叉编译