技术标签: 工具类 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的可以直接去掉
安装Kali镜像时,安装完成出现小白线的解决办法: 1.不使用网络镜像 2.安装grub时选择/dev/sda选项设置kali远程ssh登陆: 修改 /etc/ssh/sshd_config # Authentication: LoginGraceTime 120 #PermitRootLogin without-password
武侠相关的文学作品中常用“四十岁后不滞于物,草木竹石均可为剑。自此精进,渐入无剑胜有剑之境。”形容一个人的武功技艺高超,已臻化境。而我们IT工程师自身的技艺水平到达一定程度后,也会处于这种“无码胜有码”的境界。但这是什么意思呢?是说我们从此不再写代码,每天躺在床上和白花花的天花板无言对望了吗?不是的。我想对你说的是:你写下的每一行代码应该能为应用增加独特的价值,而不是为应用添加一行又一行繁复、无趣的
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...
目录1.简介2.效果图3.重点讲解4.源码1.简介 本文主要介绍了如何在QTableWidget表格的单元格中添加和删除控件,内容包含动态效果图、重点讲解和源码,读者们可以方便查看学习和交流。回目录2.效果图 运行效果图回目录3.重点讲解 1) 通过以下语句,我们可以在指定单元格中设置我们期望的控件(如示例中的勾选框、下拉框、按钮、旋钮框等); ...
“无须安装”、“触手可及”、“用完即走”……这一系列特性,使微信小程序自被提出起,就广受开发者关注,大家对它的热议可谓跌宕起伏,它的每次更新,都能引爆朋友圈。本专题特别邀请到多位微信小程序技术弄潮儿,请他们从技术开发层面对小程序进行全面解读,同时展示多款出色小程序。微信小程序技术解读(陈兴艺,广州帅为网络联合创始人&amp;CTO)从《小睡眠》谈微信小程序开发的实用技术与注意事项(刘剑华,心潮...
今天使用latex写文章,突然出现了下面的错误,查阅相关资料整理了解决办法。 错误主要是由于\\ 后面的 [] 可能造成混淆,被 LaTeX 误认为是可选的距离参数,所以我们只要将其更改即可,下面我给出了三种解决办法。文献管理 \\{}[1] 文章描述 [文件名字]\end{CJK*}文献管理 \\\relax[1] 文章描述 [文件名字]\end{CJK*...
最近我才发现,想要下载个文档,是真的不容易呀!可以让你随便复制粘贴和下载的文档,质量都不怎么样!优质的文档,需要下载券才能下载!说好的「让每个人平等地提升自我」呢?好在机智的我,最终发现了免费下载文档的奥秘,今天就分享出来给大家看,当做福利了,低调点用哦,不要让太多人知道!VVV文档在线导出工具http://wenku.baiduvvv.com/doc/之前很常用的一个在线文库下载网站突然要收费了...
目录查找链表相交节点情况1: 无环链表相交情况3:链表相交于入环前及入环节点情况4:链表A、B相交于入环后或不相交查找链表相交节点先判断链表A和B是否有环,并分别找到他们的环入口(loopA,loopB),具体方法可以参考我的上一篇博客判断链表中是否有环,并查找链表环入口。可能有以下几种情况: 1. (loopA == NULL && loopB == NULL);链表A、B均无环; 2. ((!loopA && loopB) || (loopA &&
ObjectQuery.ToTraceString 方法 ()用法int productID = 900;using (AdventureWorksEntities context = new AdventureWorksEntities()){ // Define the object query for the specific product.
解决pip安装失败方法问题描述下列软件包有未满足的依赖关系:python-pip : 依赖: python-pip-whl (= 8.1.1-2) 但是 8.1.1-2ubuntu0.4 正要被安装依赖: python:any (&lt; 2.8)依赖: python:any (&gt;= 2.7.5-5~)推荐: python-all-dev (&gt;= 2.6) 但是它将不会被安...
C++标准异常:也许我们了解过他,但你有考虑过,其实你根本不会使用,你不相信,那我问你:垃圾回收在C++中怎么实现?其实不需要实现,C++已经有了,但是你不会用,那么从开始看把。也许很高兴看到错误之后的Heap/Stack中对象被释放,可是如果没有呢?有或者试想一下一个能解决的错误,需要我们把整个程序Kill掉吗? 在C++标准异常中我向你推荐这几章: 以及一个深点的 SHE异常: 我要问你...
创建结构体,用于储存三角形顶点和重心信息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)