文章目录
前言
先说结论:无法解决
那既然无法解决,为啥还要写这样一篇文章呢,是因为这个问题我弄了一天多,我觉得有必要记录一下;
同时后面也是使用了hutool 的http作为代替方案,也是因为在hutool的官网没有特意标明,所以这也是一个理由吧!
解决问题的步骤
简单点说,就是公司系统,只允许使用forest1.5.24版本,不允许升级版本,所以在请求接口的时候遇到了ssl认证不通过的问题,即:
1、当然是百度
我的期望是,在forest的基础上配置,一搜,有绕过ssl的,但丝毫未提过forest,所以直接放弃;
2、官网
forest官网
在官网中我们可以看见有关于SSL的配置,但最低版本是1.5.28,死马当活马医,配置自定义的SSLSocketFactory,然后使用
@SSLSocketFactoryBuilder(MySSLSocketFactoryBuilder.class)
然后就没然后了,如果有用我上面也不会说解决不了了,这个只是针对后续版本的
3、看源码
查看源码得知,它提供了一个单向的绕过ssl认证的方法,既:
然后也没然后,没卵用,我可以确定我姿势没问题
4、GPT
GPT信息停滞在2021,所以在它的认知中,最新版本是1.5.12版本,不知道是不是这个原因,它提供了一大堆根本不存在的方法和错误姿势给我,怀疑人生:
吐了,直接抛弃
5、直接去gitee上看源代码的问题
大家可以自行去看看,我都试过了,无解,没卵用,然后我自己也提出一个问题以及私信:
forest的作者直接推荐升级版本,可问题就是不能升级哦,到这我就直接抛弃使用forest,采用别的方式
解决一
如果你的版本是可以升级的,无需考虑兼容性的话,建议直接升级到>=1.5.26版本,原因在1.5.26版本之后就默认自动绕过SSL验证了:
解决二
使用别的Http框架,有apache,原生的、feign、hutool、。。。,我使用的是hutool的,就图方便:
基础操作官网都有,使用HttpUtil或者HttpRequest,这里需要指明的是下载文件,带参数,带请求头,官网没指出,其实也是使用
HttpRequest
:
importcn.hutool.core.io.FileUtil;importcn.hutool.http.HttpRequest;importcn.hutool.http.HttpResponse;importjava.io.File;publicclassFileDownloadExample{publicstaticvoidmain(String[] args){HttpRequest request =HttpRequest.get("文件的URL");
request.header("Header1","Value1");// 设置请求头
request.form("param1","value1");// 设置参数HttpResponse response = request.execute();if(response.isOk()){byte[] fileBytes = response.bodyBytes();File file =newFile("保存路径");FileUtil.writeBytes(fileBytes, file);// 文件下载完成,可以使用file对象进行操作System.out.println("文件保存成功:"+ file.getAbsolutePath());}else{System.out.println("请求失败,状态码:"+ response.getStatus());}}}
版权归原作者 识时务者J 所有, 如有侵权,请联系我们删除。