由于项目中需要使用阿里云的短信平台所以直接引用了最新的SDK,版本号为 4.5.1
但是由于机器在内网环境,如果需要访问外部网络的话需要代理阿里云机器。于是去看下 阿里的SDK 官方文档如何支持代理阿里云访问,于是找到以下内容:
坑就坑在这个文档里面的设置方法设置了并没有什么用。于是自己研究了下这种设置为什么不生效
这个命令和在启动参数中加 -DXXX=XXX
是一样的效果,例如:
当我们执行这段代码的时候你会发现确实走了代理阿裏云(可以本地随便设置一个IP加端口,你会发现一直卡在那里)那么既然这是有效的,就说明了阿里云的 Http 请求一定不是通过 JDK 的 HttpURLConnection
发送的
return,既然我们系统环境里面没有这两个字段那么肯定不会设置代理阿里云,于是继续往下跟代码
最终发送 Http 请求的代码如下:
首先查看官方的发送短信Demo:
而且在这一行代码里面会进行 HttpClientConfig
的初始化,如下所示:
至此为什么官方文档上写的 System.setProperty
不生效的原因终于找到了也就是说,如果你是按照官方文档来写的代码那么你通过 System.setProperty
来设置代理阿里云是肯定不是生效的。