目的:本地需要连接国外被墙的服务,自己没有软路由等,只有是在本机设置了代理,但是本机运行java程序并不经过代理。connect time out。
操作:
文章源:oracle官方文档
1、全局编程方式设置:
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8118");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "8118");
System.setProperty("ftp.proxHost", "127.0.0.1");
System.setProperty("ftp.proxyPort", "8118");
System.setProperty("socksProxyHost", "127.0.0.1");
System.setProperty("socksProxyPort", "8118");
2、全局运行时设置参数:
java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8118 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8118 -Dftp.proxyHost=127.0.0.1 -Dftp.proxyPort=8118 -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8118 GetURL
3、局部设置,请查看官方文档最下面。
如果以上设置依然不能连接到目标服务器,很可能是你的端口错误或者该端口不支持该协议。
场景:
我使用javamail连接gmail服务器,上面执行总是timeout。其中在于8118端口只支持http和ftp协议,他是将http和ftp协议代理转换成socket协议。如果socket协议支持的端口是1080,那么上面正确额配置应该是
java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8118 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8118 -Dftp.proxyHost=127.0.0.1 -Dftp.proxyPort=8118 -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=1080
如果在linux中配置代理参数,需要设置/etc/environment文件成
http_proxy="http://127.0.0.1:8118"
https_proxy="https://127.0.0.1:8118"
ftp_proxy="ftp://127.0.0.1:8118"
socks_proxy="socks://127.0.0.1:1080"
HTTP_PROXY="http://127.0.0.1:8118"
HTTPS_PROXY="https://127.0.0.1:8118"
FTP_PROXY="ftp://127.0.0.1:8118"
SOCKS_PROXY="socks://127.0.0.1:1080"