android中出现javax.net.ssl.SSLPeerUnverifiedException的解决方案

2023-11-02

javax.net.ssl.SSLPeerUnverifiedException: No peer certificate的错误,根据有关资料解决如下:

1、编写SSLSocketFactoryEx,以代替原有的SSLSocketFactory,代码如下:

 

package com.nbcio.baishicha.yunbiji;

 

import java.io.IOException;

import java.net.Socket;

import java.net.UnknownHostException;

import java.security.KeyManagementException;

import java.security.KeyStore;

import java.security.KeyStoreException;

import java.security.NoSuchAlgorithmException;

import java.security.UnrecoverableKeyException;

 

import javax.net.ssl.SSLContext;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

 

import org.apache.http.conn.ssl.SSLSocketFactory;

 

public class SSLSocketFactoryEx extends SSLSocketFactory {


    SSLContext sslContext = SSLContext.getInstance("TLS");

    

    public SSLSocketFactoryEx(KeyStore truststore) throws NoSuchAlgorithmException,

            KeyManagementException, KeyStoreException, UnrecoverableKeyException {

        super(truststore);

        // set up a TrustManager that trusts everything

        TrustManager tm = new X509TrustManager() {

           

            public X509Certificate[] getAcceptedIssuers() {

                //return new X509Certificate[]{};

                return null;

            }


@Override

            public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {

           // TODO Auto-generated method stub

           

            }


@Override

            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

           // TODO Auto-generated method stub

           

            }

        };


        sslContext.init(null, new TrustManager[] { tm }, new java.security.SecureRandom());

    }


    @Override

    public Socket createSocket(Socket socket, String host, int port, boolean autoClose)

            throws IOException, UnknownHostException {

        injectHostname(socket, host);

        return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);

    }


    @Override

    public Socket createSocket() throws IOException {

        return sslContext.getSocketFactory().createSocket();

    }

    

    private void injectHostname(Socket socket, String host) {

        try {

            Field field = InetAddress.class.getDeclaredField("hostName");

            field.setAccessible(true);

            field.set(socket.getInetAddress(), host);

        } catch (Exception ignored) {

        }

    }

}

2、编写新的HttpClient  getNewHttpClient来代替原有的DefaultHttpClient,代码如下:
public static HttpClient getNewHttpClient() {
   try {
       KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
       trustStore.load(null, null);
 
       SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);
       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));
 
       ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
 
       return new DefaultHttpClient(ccm, params);
   } catch (Exception e) {
       return new DefaultHttpClient();
   }
}
3、在postRequest调用的时候如下方式就可以:
HttpResponse httpResponse =  (HttpResponse) getNewHttpClient().execute(postMethod);

Related posts:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android中出现javax.net.ssl.SSLPeerUnverifiedException的解决方案 的相关文章

  • Java概述

    文章目录 一 Java简介 1 1 Java版本 1 2 Java特点 二 Java运行机制 2 1 Java运行过程 2 2 JDK JRE JVM 三 Java开发环境 3 1 下载 安装JDK 3 2 配置环境变量 四 Java开发规
  • R语言实战-第八章回归

    第八章 回归 简单线性回归 用到基础包中的women数据集 研究身高与体重的关系 head women fit lt lm weight height data women summary fit fitted fit 列出拟合模型的预测值
  • 【深度学习】RetinaFace人脸检测简要介绍

    介绍 Insight Face在2019年提出的最新人脸检测模型 原模型使用了deformable convolution和dense regression loss 当时在 WiderFace 数据集上达到SOTA 基网络有三种结构 基于
  • Java使用base64格式上传图片

    使用蚂蚁金服ui直接返回的是base64格式的图片 通过post方式进行请求 然后在控制器中以字符串的形式进行接收 接收之后进行转图片存储处理 只保存路径到数据库中 base64字节转图片代码 package com utils impor
  • qsort函数实现对任意数据的排序

    学会使用qsort函数排序 qsort介绍 compare函数介绍 不同的数据类型相应的比较函数定义 对数组元素为数字的 数组元素为字符时比较函数定义 结构体数据比较函数定义 qsort介绍 qsort函数是一个库函数 它的作用是对数据进行
  • 14.1 矩阵幂级数

    文章目录 矩阵的幂 矩阵幂的极限 谱半径与范数 矩阵幂级数 矩阵的幂 现在讨论下矩阵的n次方的问题 比如下面的矩阵 A 1
  • 医学图像配准MATLAB实现

    医学图像配准MATLAB实现 医学图像处理在临床诊断 肿瘤治疗和医学信息融合等领域中起着至关重要的作用 医学图像配准作为医学图像处理中的重要研究方向之一 其目的是将通过不同机器或技术获取到的不同角度或时间段的医学图像进行对比 以便医生或研究
  • 七种排序算法

    排序算法主要分为三大类 分别是插入排序 选择排序和交换排序 其中插入排序包括直接插入排序和希尔排序 选择排序包括直接选择排序和堆排序 交换排序包括冒泡排序 快速排序和归并排序 各种排序算法的时间复杂度和空间复杂度如下 一 插入排序 1 直接
  • android之fragment与fragment、activity与activity、fragment与activity之间的通信

    Broadcast广播接受者可以实现所有通信 activity与activity之间的通信 当下一个activity关闭时传值给上一个activity 主要用得到startActivityForResult和onActivityResult
  • epoll_create和epoll_create1

    名字 epoll create epoll create1 创建epoll文件描述符 摘要 include
  • 创建自定义类的对象数组

    源代码 public class Student static int number 0 静态变量的访问可以不用创建类的实例就可就可使用 lt 类名 属性 gt 的方法访问 String name 学生姓名 Student 无参构造函数 S
  • 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34

    目录 写在前面 Finite State Manchines 2014 q3c m2014 q6b m2014 q6c m2014 q6 2012 q2fsm 2012 q2b 2013 q2afsm 2013 q2bfsm 写在前面 HD
  • C++中的虚函数表和虚函数在内存中的位置

    目录 结论 今天在看别人面经的时候发现了这个问题 一时间发现自己也说不清楚 还想当然的以为 虚函数表既然是类对象公有的 那么应该在静态存储区 想当然终究只是想当然 经过试验得知 这种想法是错误的 由于不同的编译器在虚函数表上的实现可能不同
  • Jdk1.8新特性 - 方法引用

    一 说明 方法引用使用一对冒号 标识 通过方法的名字来指向一个方法 是函数式接口的另一种书写方式 通过方法引用 可以将方法的引用赋值给一个Function变量 Lambda表达式一般用于自己提供方法体 而方法引用一般直接引用现成的方法 二
  • Linux系统shell脚本之根分区监控

    Linux系统shell脚本之根分区监控 一 脚本要求 二 脚本分析 三 执行脚本 查看执行输出文件 一 脚本要求 1 编写一个shell脚本 脚本名为disk per sh 2 脚本检测根分区使用率 如果根分区超过80 则显示使用率 且提
  • ES6笔记(解构)

    1 解构 解构通俗点说 就是通过一种特定格式 快捷的读取对象 数组中的数据的方法 基本用法 如果右边是对象 左边也要用对象的格式 解构出来就是变量了 再也不是属性了 解构对象 var oUser name aaa age 20 es5读数据
  • [QT_001]解决Ubuntu下Qt无法连接MySQL数据库[Linux环境]

    准备 简要思路 编译Qt下MySQL项目 使其重新生成libqsqlmysql so这个动态库 而后进行替换 编译项目过程中 项目配置文件需要引入使用到MySQL的头文件和库 所以需要安装MySQL 我的环境 1 Ubuntu 18 04
  • 对受控组件和非受控组件的理解,以及应用场景?

    一 受控组件 受控组件 简单来讲 就是受我们控制的组件 组件的状态全程响应外部数据 举个简单的例子 class TestComponent extends React Component constructor props super pr
  • 笨人可以学计算机吗,为什么有的笨人一旦开窍,其人生就像开了挂似的呢?

    前言 真正的天才 是懂得在别人面前装糊涂的人 但如果他受到某种刺激 装糊涂也就没有必要了 低调惯了的人 总有一天 会一鸣惊人 韬盛和夫 大自然有一种特有的现象 自作聪明的动物往往不会活的太长 而那些看起不起眼的动物 往往隐藏着巨大的力量 笨

随机推荐

  • Bootstarp入门教程(6) 表格

    基本案例 为任意 table 标签添加 table可以为其赋予基本的样式 少量的内补 padding 和水平方向的分隔线 table
  • Redis中的事务

    1 Redis事务的定义 Redis事务是一个单独的隔离操作 事务中的所有命令都会序列化 然后按照顺序地执行 事务在执行的过程中 不会被其他客户端发送来的命令请求所打断 其实就是一个缓存队列 将所有任务放入 然后再某一个阶段 将其中的任务拿
  • C语言(Head First C)-9_1:静态库与动态库:静态库

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 9 1 静态库与动态库 静态库 我们已经见识过标准库的威力了 现在是时候在代码中发挥这种威力了 本章内容 创建自己的库 并在多个程序中复用相同代码 通过动态库在运行时
  • DATA_FORMAT = 'NCHW' 和DATA_FORMAT = 'CHWN'

    转载自https blog csdn net qq 39622065 article details 81228915 NHWC batch in height in width in channels NCHW batch in chan
  • nginx日志文件删除后空间不能释放,必须重启服务才能释放空间

    一台nginx服务器发现磁盘空间撑爆了 进去看全是日志文件把磁盘写满了 可是用rm删除log文件后发现磁盘空间并没有被释放 明明文件没有了呀 郁闷 于是google下 未释放磁盘空间原因 在Linux或者Unix系统中 通过rm或者文件管理
  • 千万级规模高性能、高并发的网络架构经验分享

    from https www cnblogs com shanyou p 5048099 html utm source tuicool utm medium referral 架构以及我理解中架构的本质 在开始谈我对架构本质的理解之前 先
  • 最长回文---Manacher算法解析(俗称:马拉车算法)

    题目链接 https cn vjudge net contest 320014 problem E Problem Description 给出一个只由小写英文字符a b c y z组成的字符串S 求S中最长回文串的长度 回文就是正反读都是
  • vsCode快捷方式设置(ubuntu版本)

    ubuntu版本的vscode 快捷键设置的地方 文件 gt 首选项 gt 键盘快捷方式 按键绑定 gt 更改按键绑定
  • <<软件研发之道>>经验法则4---不要认为别人是笨蛋

    转载自 http book 51cto com art 201107 277211 htm 参考书籍 lt lt 软件研发之道 gt gt 我在这里重申 软件是一种知识产权 你必须运用智慧才能开发出软件 你在工作中调用的智慧越多 你最终得到
  • 特征工程之分箱

    一般在建立分类模型时 需要对连续变量离散化 特征离散化后 模型会更稳定 降低了模型过拟合的风险 比如在建立申请评分卡模型时用logsitic作为基模型就需要对连续变量进行离散化 离散化通常采用分箱法 分箱的重要性及其优势 离散特征的增加和减
  • 测试用例编写方法_划分等价类

    一 划分等价类概述 计算两个1 100之间整数的和 穷举测试 1 2 3 1 3 4 1 4 5 1 100 101 100 1 101 100 2 102 100 3 103 100 100 200 这样肯定是不行的 我们需要分析 二 等
  • 数据库原理实验报告【全集】

    如果对你有帮助 记得点赞哦 实验1 8 SQL Server 2008的安装及管理工具的使用 SQL Server数据库的管理 SQL Server数据表的管理 数据查询 索引和视图 数据完整性 Transact SQL程序设计 存储过程和
  • 如何在 XMind 中绘制流程图?

    进阶教程 如何在 XMind 中绘制流程图 XMind 是专业强大的思维导图软件 由于其结构没有任何限制 很多朋友特别喜欢用它来绘制流程图 禁不住大家的多次询问 今天 GTQ28就将这简单的流程图绘图方法分享给大家 在 XMind 中 绘制
  • matlab声音信号处理 频率图 信号过滤和播放声音

    1 内容简介 略 425 可以交流 咨询 答疑 2 内容说明 略 3 仿真分析 clear clc close all mini project x fs audioread mini proj wav x x 1 N length x n
  • python执行js代码进行aes加解密以及python代码与前端交互加解密

    在前后端交互的过程中 基于安全考虑 往往需要对某些数据进行加密传输 我们以传输密码为例 如果密码明文传输的话 有被截取的风险 因此我们可以考虑采取rsa加密或者aes加密的方式 本文采用aes加密的方法进行传输 aes加解密 前后端要商定好
  • 11张网络安全思维导图,运维快收藏起来强化你的服务器吧!

    本文包含以下思维导图 网络安全绪论 扫描与防御技术 网络监听及防御技术 口令破解及防御技术 欺骗攻击及防御技术 拒绝服务供给与防御技术 缓冲区溢出攻击及防御技术 Web攻击及防御技术 木马攻击与防御技术 计算机病毒 网络安全发展与未来 网络
  • 如何在网上赚钱,下班兼职赚钱,这8种方法或许有适合你的

    网上赚钱 简称 网赚 网赚 主要是指利用计算机 服务器等设备 通过互联网上的各种信息差 从互联网上赚钱的一种方式 兼职赚钱 简单点说就是 你有一份自己的工作是正职 除此之外你还可以再找一份别的工作作为副职 就是工作的同时 兼作另一份工作 叫
  • windows 查看端口占用情况

    方法一 开始 运行 cmd 进入命令提示符 输入netstat ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项 可以在任务管理器中选 查看 选择列 方法二 查看所有的端口占用情
  • 牛客网刷题笔记

    本来想在牛客网上刷完一道在线编程题后就写以下体会笔记 可是找了半天都没找到在哪里写东西 无奈 我就只好来CSDN上写了 只是想写而已 刚开始写 肯定会很不理想 但是没关系 慢慢写吧 总会有提高的 今天在牛客网刷了一道求最长字串是回文数的长度
  • android中出现javax.net.ssl.SSLPeerUnverifiedException的解决方案

    javax net ssl SSLPeerUnverifiedException No peer certificate的错误 根据有关资料解决如下 1 编写SSLSocketFactoryEx 以代替原有的SSLSocketFactory