xutils3中Https的hostName验证的jar包改造

需求:

之前项目里有个xutils3框架进行网络交互,现在需要改造全栈HTTPS,Android端本地需要验证https的hostname等信息,

实现:

我需要对于xutils3进行代码改造,先从网上找到xutils3的代码,然后进行代码定位及改造

废话不多,先上代码:


先看改造的入口




很简单,我再其中加入一个isdebuger的方法,打印hostname日志信息,

然后使用一个hostnames集合,这个集合是用来装入https等待验证的hostname,其中有一个匹配则返回true;验证通过,

而源生的xutils3是默认全部return true不验证hostName的


用法:

//添加等待验证的hostName


//设置日志模式,请在打包时设置成false(关闭日志)



点击下载jar包


(如果想看源码请翻阅最底)


如果还行看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就能打包。

源码下载


<May 27, 2025 10:46:20,298 AM CST> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: A MultiException has 2 exceptions. They are: 1. weblogic.utils.NestedRuntimeException: [Security:090563]Cannot create instance of Hostname Verifier weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier. 2. java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.security.CertificateCheckService A MultiException has 2 exceptions. They are: 1. weblogic.utils.NestedRuntimeException: [Security:090563]Cannot create instance of Hostname Verifier weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier. 2. java.lang.IllegalStateException: Unable to perform operation: post construct on weblogic.security.CertificateCheckService at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:392) at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487) at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:305) at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85) at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2126) Truncated. Caused By: weblogic.utils.NestedRuntimeException: [Security:090563]Cannot create instance of Hostname Verifier weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier. at weblogic.security.utils.SSLWLSHostnameVerifier.createHostnameVerifier(SSLWLSHostnameVerifier.java:272) at weblogic.security.utils.SSLWLSHostnameVerifier.getDefaultVerifier(SSLWLSHostnameVerifier.java:235) at weblogic.security.utils.SSLWLSHostnameVerifier.getDefaultVerifier(SSLWLSHostnameVerifier.java:204) at weblogic.security.utils.SSLWLSHostnameVerifier.<init>(SSLWLSHostnameVerifier.java:69) at weblogic.security.utils.SSLContextWrapper.<init>(SSLContextWrapper.java:101) Truncated. Caused By: java.lang.ClassNotFoundException: weblogic.security.utils.SSLWLSHostnameVerifier.DefaultHostnameVerifier at com.oracle.classloader.PolicyClassLoader.findClass(PolicyClassLoader.java:398) at com.oracle.classloader.PolicyClassLoader.loadClass(PolicyClassLoader.java:371) at com.oracle.classloader.weblogic.LaunchClassLoader.loadClass(LaunchClassLoader.java:55) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at java.lang.Class.forName0(Native Method) Truncated.
05-28
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值