阿里云短信服务使用代理的坑

1. 初始配置

在springboot 启动时候配置了系统参数

其中的http 和 https 分别做好代理了 

prop.setProperty("https.proxyHost", "192.168.0.1");
prop.setProperty("https.proxyPort", "8888");

就等价于   -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort = 8888 ,但是这种设置有一个限制,那就是只对 JDK 自带的 HttpURLConnection 有效

2. 阿里配置

 

阿里的SDK会通过 System.getenv("HTTPS_PROXY") 和 System.getenv("HTTP_PROXY") 来判断系统的环境中是否有如下两个变量。有的话就设置到 HttpClientConfig 中,没有的话则直接 return

2.1 获取默认profile

2.2 取用的是默认的HttpClientConfig

2.3 默认的代理为空

2.4 阿里取出的代理配置

 结论阿里取用的代理并不是我们第一步中设置的代理,所以我们要重新设置! 所以这个取出的默认代理并不是我们之前所设置的

3. 解决办法

解决办法 将HTTPS_PROXY 或者 HTTP_PROXY 设置为系统环境变量(可以生效,但是不推荐) 在 buildClient 方法里面,可以发现只有当 HttpClientConfig 为空的情况下才会创建默认的 config,那么我们可以在 IClientProfile 里面,手动的将 HttpClientConfig 设置进去,从而避免创建默认的HttpClientConfig。 用 JDK 的 HttpURLConnection 发请求,通过 System.setProperty 设置代理。

在获取profile的时候设置如下代码,

设置如下,添加代理

 HttpClientConfig config = HttpClientConfig.getDefault();
 config.setHttpProxy("http://10.26.x.x:8888");
 config.setHttpsProxy("http://10.26.x.x:8888");
 profile.setHttpClientConfig(config);

这才是真正的设置阿里调用时的代理地址

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值