经常有人会问 我们的
服务器在内网 不想让
服务器拥有外网IP前提下访问
阿里云的OpenAPI可以吗 今天我们对此进行一个解答。在文章中 我们使用最新的
阿里云Java SDK com.aliyun:aliyun-java-sdk-core:4.5.20 。
文章的示例代码中
代理假设为192.168.1.1:8888 具体
代理 包括下面示例里用到的用户名、密码请在
开发、测试时改为对应的正确配置。
# 1. 阿里云Java SDK支持的HTTP客户端
阿里云Java SDK的HTTP客户端在 com.aliyuncs.http.HttpClientFactory.buildClient(IClientProfile) 中进行初始化 当前支持四种不同的客户端 定义在枚举类com.aliyuncs.http.HttpClientType中
* Compatible 传统的Java自带的Http客户端 用[ java.net ](https://docs.oracle.com/javase/8/docs/api/java/net/package-summary.html)进行HTTP访问
* ApacheHttpClient [ Apache Httpclient ](https://hc.apache.org/httpcomponents-client-4.5.x/index.html)客户端的实现 是阿里云Java SDK的默认实现
* OkHttp [ OkHttp ](https://square.github.io/okhttp/)客户端 当前暂不支持 不可用
* Custom 自定义客户端
因此 理论上 只要使用的HTTP客户端实现支持代理 那么阿里云Java SDK也支持代理。再不济 自定义客户端可以进行魔改。
# 2. 通用代理设置方式
## 2.1 环境变量中配置代理
阿里云Java SDK支持 HTTP_PROXY 、 HTTPS_PROXY 、 NO_PROXY 三个系统环境变量 注意大小写 。这些变量通过 System.getEnv() 读入。需要注意的是 使用 System.setProperty() 设置的变量是无效的。
在Linux系统中临时配置环境变量 可执行
shell
export HTTP_PROXY http://192.168.1.1:8888
export HTTPS_PROXY https://192.168.1.1:8888
然后正常初始化 com.aliyuncs.IAcsClient 即可。这种方式对代码无侵入 可写到应用启动脚本中。
## 2.2 代码中指定代理
阿里云Java SDK支持在代码中配置代理 并且配置的代理优先级高于环境变量中的配置
java
// 配置HTTP客户端
HttpClientConfig config HttpClientConfig.getDefault();
config.setHttpProxy( http://192.168.1.1:8888
config.setHttpsProxy( https://192.168.1.1:8888
// 配置SDK Profile
IClientProfile profile DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
profile.setHttpClientConfig(config);
// 生成Client实例
IAcsClient client new DefaultAcsClient(profile);
本文转自网络,原文链接:https://developer.aliyun.com/article/784977
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!