直接给代码吧。研究了几天才搞定......

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证书获取数据相关推荐

  1. android与OneNET云平台的获取数据与发送数据

    这篇文章对于大学学生来说应该是一个福利,因为可能跟你的毕业设计相关联. 1.GET 获取云平台的数据 private static final String DeviceID = "7154 ...

  2. Android Camera2 相机预览、获取数据

    Camera2简要说明 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2),大幅提高了A ...

  3. Android开发 Intent传递参数,获取数据为null

    android开发 Activity通过Intent传递参数,获取失败的原因 启动一个有返回值的activity (MapActivity) Intent intent = new Intent(Up ...

  4. 实现android多页面跳转,获取数据操作

    准备工具:安卓开发工具 实现页面效果: 1.第一页面:要求停留三秒跳转第二页面 2.第二页面,要求:获取输入的数据点击确定按钮跳转第三页面并数据传入第三页面 3.第三页面:要求:接收第二页面数据显示在 ...

  5. android设备连接蓝牙扫描枪获取数据

    第一步,开启连接 首先要开启蓝牙并且找到蓝牙扫描枪连接,在自己的应用中添加权限 <uses-permission android:name="android.permission.BL ...

  6. Android https 自签名和CA证书验证(基于OkHttp)

    Android HTTPS自签名和CA证书验证(基于OkHttp) HTTPS介绍 CA证书 自签名证书 问题描述 域名校验 OkHttp设置 总结 HTTPS介绍 HTTPS是一种通过计算机网络进行 ...

  7. 从cer和pfx证书文件获取公、私钥

    其他文章: 安全系列之--手写JAVA加密.解密 安全系列之--数据传输的完整性.私密性.源认证.不可否认性 安全系列之--主流Hash散列算法介绍和使用 安全系列之--RSA的公钥私钥有多少人能分的 ...

  8. ssl证书获取与tomcat和nginx设置https

    文章目录 1 SSL证书获取 第1步 进入 域名 点击 开启 SSL证书 第2步 选择证书类型 第3步 确认部署证书 2 下载安装 https 2.1 Tomcat 安装 第1步 新建 cert文件夹 ...

  9. android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据

    我是Android开发的新手,我正在尝试构建一个ListView,它使用gson从Web服务获取数据.我有一个模型类,一个列表类,一个适配器类和活动类. 该列表工作正常,它获得了数据,现在我想将OnI ...

最新文章

  1. 反编译android的apk
  2. leetcode 54. 螺旋矩阵
  3. 如何删除空文件夹Java_JAVA实现将磁盘中所有空文件夹进行删除的代码
  4. 为什么onenote一直在加载_OneNote:科研笔记独一无二的无敌利器
  5. 命令点无效怎么处理_CAD执行修改命令,你试过重复选择对象吗?
  6. LAMP架构,纯文本作品
  7. 城市运行一网统管_【宣传活动】持续开展城市运行“一网统管”建设宣传活动...
  8. 1.13 编程基础之综合应用 46 八进制到十进制 python
  9. 求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)
  10. 第四范式完成超10亿元C轮融资,估值12亿美元
  11. 64位Eclipse运行时提示“Failed to load the JNI shared library \Java\jre6\bin\client\jvm.dll”的一个解决方案
  12. Android之Adapter总结
  13. GDUFE ACM-1096
  14. 携程合体去哪儿,与途牛度假旅游市场争高下
  15. Vue + ElementUI el-input无法输入、修改、删除的问题
  16. 针式打印机保养方法汇总
  17. 利用Excel宏中文转拼音方法
  18. Python学习路线,Python教程,Python入门,Python自学课程,Python学习网站
  19. ps更换证件照的背景色
  20. mysql 创建外键语句_sql创建外键语句

热门文章

  1. 对于glut和freeglut的一点比较和在VS2013上的配置问题
  2. 第 8 天 多线程与多进程
  3. 如何查看windows xp系统的位数?
  4. bootstrap table相关操作
  5. mysql 自然排序_如何在mysql中实现自然排序
  6. visual stdio打开之后与屏幕尺寸不匹配_柔和点亮桌面,让眼睛更舒服,雷神屏幕挂灯L1体验...
  7. (70)FPGA模块调用(system Verilog调用system Verilog)
  8. (46)FPGA面试题FPGA内部结构及资源
  9. FPGA状态机跑飞原因分析
  10. openssl paho.mqtt交叉编译