需求:
之前项目里有个xutils3框架进行网络交互,现在需要改造全栈HTTPS,Android端本地需要验证https的hostname等信息,
实现:
我需要对于xutils3进行代码改造,先从网上找到xutils3的代码,然后进行代码定位及改造
废话不多,先上代码:
先看改造的入口
很简单,我再其中加入一个isdebuger的方法,打印hostname日志信息,
然后使用一个hostnames集合,这个集合是用来装入https等待验证的hostname,其中有一个匹配则返回true;验证通过,
而源生的xutils3是默认全部return true不验证hostName的
用法:
//添加等待验证的hostName
//设置日志模式,请在打包时设置成false(关闭日志)
(如果想看源码请翻阅最底)
如果还行看xutils线程池分离的请往下看:
---------------------------------------------分切线-------------------------------------------------------
需求:
日志服务器跟业务层服务器是分离的,如果日志跟业务层共用一个线程池,我们担心日志服务器线程阻塞导致。影响业务层的接口响应速度.
实现:
所以我们应该对日志服务器跟业务服务器做一个线程池分离,(日志服务器调用A线程池,业务服务器调用B线程池);
话不多say,看代码:
定位到请求发送的cls
发现以下代码:
这个http_executor就是http请求的线程池,我在下面加入一个log_executor线程池。
cache_executor是一个缓存callback调用的线程池,处理缓存请求的,我们暂时不管。
改造开始:
我们只需要加个三目运算,然后请求时候指定这是否是个logrequest就可以。。。。
so easy。。。
然后我们改造完成后makeJar进行打包。
然后我们看看用法:
只要在你的requestParams里调用
setLogRequest()即可,true代表是调用log线程池,false调用http业务层线程池
如果需要这套线程池分离,请自己打包,如果不知道源码打包,很简单,在as底部工具栏有个叫Terminal里输入makeJar就能打包。