OKhttp忽略https证书_okhttp 忽略证书_谈情不如逗狗.的博客-程序员宅基地

技术标签: 工具类  android入门教学  android基础  

遇到坑公司两个网自动匹配错了一直报   D/NetworkSecurityConfig: No Network Security Config specified, using platform default

老费劲 记录下

到入工具类SSLSocketClient :

import java.security.SecureRandom;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

/**
 * Created by liutao on 2018/8/9.
 */

public class SSLSocketClient {
    //获取这个SSLSocketFactory
    //通过这个类我们可以获得SSLSocketFactory,这个东西就是用来管理证书和信任证书的
    public static SSLSocketFactory getSSLSocketFactory() {
        try {
            SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, getTrustManager(), new SecureRandom());
            return sslContext.getSocketFactory();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    //获取TrustManager
    private static TrustManager[] getTrustManager() {
        //不校检证书链
        TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    @Override
                    public void checkClientTrusted(X509Certificate[] chain, String authType) {
                        //不校检客户端证书
                    }

                    @Override
                    public void checkServerTrusted(X509Certificate[] chain, String authType) {
                        //不校检服务器证书
                    }

                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[]{};
                        //OKhttp3.0以前返回null,3.0以后返回new X509Certificate[]{};
                    }
                }
        };
        return trustAllCerts;
    }

    //获取HostnameVerifier
    public static HostnameVerifier getHostnameVerifier() {
        HostnameVerifier hostnameVerifier = new HostnameVerifier() {
            @Override
            public boolean verify(String s, SSLSession sslSession) {
                //未真正校检服务器端证书域名
                return true;
            }
        };
        return hostnameVerifier;
    }
}

okhttp工具类:

import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;

import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

/**
 * Created by liutao on 2017/9/21.
 */

public class MyOkHttpUtils {
    //mdiatype 这个需要和服务端保持一致
    private static final MediaType MEDIA_TYPE_JSON = MediaType.parse("application/x-www-form-urlencoded; charset=utf-8");

    public static final String BaseUrl="https://192.168.11.11:9101";   //公司服务器

    public static OkHttpClient okHttpClient=null;

    static String cookies;

    //懒汉
    private static synchronized OkHttpClient getInstance(){


         okHttpClient = new OkHttpClient().newBuilder()
                .connectTimeout(15, TimeUnit.SECONDS)
                .readTimeout(15, TimeUnit.SECONDS)
                .writeTimeout(15, TimeUnit.SECONDS)
                .sslSocketFactory(new SSLSocketClient().getSSLSocketFactory())//配置
                .hostnameVerifier(new SSLSocketClient().getHostnameVerifier())//配置    //忽略验证证书
                .build();

        if(okHttpClient==null){
            okHttpClient=new OkHttpClient();
        }

        cookies=SharedPreferencesUtils.getString("cookie");
        return  okHttpClient;
    }

    /**
     * OKHttp 同步 Get
     *
     * @param url 请求网址
     * @return 获取到数据返回Response,若未获取到数据返回null
     *
     * 我们希望以异步的方式去执行请求,调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。
     */

    public static Response okHttpGet(String url){
        getInstance();

        Request request=new Request.Builder().addHeader("cookie",cookies).url(url).build();

        Response response=null;

        try {
            response=okHttpClient.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return response;

    }

    /**
     * OKHttp 异步 Post
     *
     * @param url 请求网址
     * @return 获取到数据返回Response,若未获取到数据返回null
     */
    public static Response okHttpPost(String url, HashMap<String,String> paramsMap){

        getInstance();



        FormBody.Builder builder = new FormBody.Builder();

        for(String key:paramsMap.keySet()){
            builder.add(key,paramsMap.get(key));
        }

        RequestBody requestBody=builder.build();

        Request request=new Request.Builder().addHeader("cookie",cookies).url(url).post(requestBody).build();

        Response response=null;

        try {
            response=okHttpClient.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

        return response;

    };
}

不要要使用cookies的可以直接去掉

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hdhhd/article/details/81560080

智能推荐

Kali虚拟机安装常见问题解决(一)_kali下载后不是光盘文件_AnywayC9的博客-程序员宅基地

安装Kali镜像时,安装完成出现小白线的解决办法:    1.不使用网络镜像    2.安装grub时选择/dev/sda选项设置kali远程ssh登陆:    修改 /etc/ssh/sshd_config    # Authentication:    LoginGraceTime 120    #PermitRootLogin without-password

Android Support 22.1 发布!_CheeRok的博客-程序员宅基地

武侠相关的文学作品中常用“四十岁后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。”形容一个人的武功技艺高超,已臻化境。而我们IT工程师自身的技艺水平到达一定程度后,也会处于这种“无码胜有码”的境界。但这是什么意思呢?是说我们从此不再写代码,每天躺在床上和白花花的天花板无言对望了吗?不是的。我想对你说的是:你写下的每一行代码应该能为应用增加独特的价值,而不是为应用添加一行又一行繁复、无趣的

freecodecamp_我在1个月内完成了整个freeCodeCamp课程(并记录了所有内容)_cumi6497的博客-程序员宅基地

freecodecampOne month ago I embarked on a challenge that many people told me was insane. I set out to conquer the entire freeCodeCamp curriculum. All while live streaming everything on my YouTube chan...

实例QT程序 —— QTableWidget 表格添加/删除单元格控件_qt表格添加控件_橙色阳光五月天的博客-程序员宅基地

目录1.简介2.效果图3.重点讲解4.源码1.简介 本文主要介绍了如何在QTableWidget表格的单元格中添加和删除控件,内容包含动态效果图、重点讲解和源码,读者们可以方便查看学习和交流。回目录2.效果图 运行效果图回目录3.重点讲解 1) 通过以下语句,我们可以在指定单元格中设置我们期望的控件(如示例中的勾选框、下拉框、按钮、旋钮框等); ...

《程序员》9月精彩内容:微信小程序 & 中国人工智能大会集锦_微信人工智能大会小程序_csdn_csdn__AI的博客-程序员宅基地

“无须安装”、“触手可及”、“用完即走”……这一系列特性,使微信小程序自被提出起,就广受开发者关注,大家对它的热议可谓跌宕起伏,它的每次更新,都能引爆朋友圈。本专题特别邀请到多位微信小程序技术弄潮儿,请他们从技术开发层面对小程序进行全面解读,同时展示多款出色小程序。微信小程序技术解读(陈兴艺,广州帅为网络联合创始人&amp;amp;CTO)从《小睡眠》谈微信小程序开发的实用技术与注意事项(刘剑华,心潮...

latex常见错误之Illegal unit of measure (pt inserted)_皇德华叫兽的博客-程序员宅基地

今天使用latex写文章,突然出现了下面的错误,查阅相关资料整理了解决办法。   错误主要是由于\\ 后面的 [] 可能造成混淆,被 LaTeX 误认为是可选的距离参数,所以我们只要将其更改即可,下面我给出了三种解决办法。文献管理 \\{}[1] 文章描述 [文件名字]\end{CJK*}文献管理 \\\relax[1] 文章描述 [文件名字]\end{CJK*...

随便推点

原创力文档怎么免费下载_谁说下载文档需要下载券?老司机分享的良心工具,全网文档免费下..._weixin_39880337的博客-程序员宅基地

最近我才发现,想要下载个文档,是真的不容易呀!可以让你随便复制粘贴和下载的文档,质量都不怎么样!优质的文档,需要下载券才能下载!说好的「让每个人平等地提升自我」呢?好在机智的我,最终发现了免费下载文档的奥秘,今天就分享出来给大家看,当做福利了,低调点用哦,不要让太多人知道!VVV文档在线导出工具http://wenku.baiduvvv.com/doc/之前很常用的一个在线文库下载网站突然要收费了...

查找相交链表相交节点_求交叉链表的交叉节点_hander_left的博客-程序员宅基地

目录查找链表相交节点情况1: 无环链表相交情况3:链表相交于入环前及入环节点情况4:链表A、B相交于入环后或不相交查找链表相交节点先判断链表A和B是否有环,并分别找到他们的环入口(loopA,loopB),具体方法可以参考我的上一篇博客判断链表中是否有环,并查找链表环入口。可能有以下几种情况: 1. (loopA == NULL &amp;&amp; loopB == NULL);链表A、B均无环; 2. ((!loopA &amp;&amp; loopB) || (loopA &amp;&amp

获得EntityFramework生成的SQL语句_Hmillet的博客-程序员宅基地

ObjectQuery.ToTraceString 方法 ()用法int productID = 900;using (AdventureWorksEntities context = new AdventureWorksEntities()){ // Define the object query for the specific product.

安装pip失败解决方法:_sun eclipse的博客-程序员宅基地

解决pip安装失败方法问题描述下列软件包有未满足的依赖关系:python-pip : 依赖: python-pip-whl (= 8.1.1-2) 但是 8.1.1-2ubuntu0.4 正要被安装依赖: python:any (&amp;lt; 2.8)依赖: python:any (&amp;gt;= 2.7.5-5~)推荐: python-all-dev (&amp;gt;= 2.6) 但是它将不会被安...

ci try catch捕捉不到_C程序员须知的C++处理异常技巧-try,catch,throw,finally_何以法考人的博客-程序员宅基地

C++标准异常:也许我们了解过他,但你有考虑过,其实你根本不会使用,你不相信,那我问你:垃圾回收在C++中怎么实现?其实不需要实现,C++已经有了,但是你不会用,那么从开始看把。也许很高兴看到错误之后的Heap/Stack中对象被释放,可是如果没有呢?有或者试想一下一个能解决的错误,需要我们把整个程序Kill掉吗? 在C++标准异常中我向你推荐这几章: 以及一个深点的 SHE异常: 我要问你...

osg网格划分_osg网格线_cuglxw的博客-程序员宅基地

创建结构体,用于储存三角形顶点和重心信息struct TriangleSelf {public: osg::Vec3f _p0; osg::Vec3f _p1; osg::Vec3f _p2; osg::Vec3f _centre; TriangleSelf(osg::Vec3f p0,osg::Vec3f p1,osg::Vec3f p2,osg::Vec3f centre)

推荐文章

热门文章

相关标签