Java可以通过JVM参数设置代理服务器

使用系统代理

JVM属性java.net.useSystemProxies:boolean可以用来设置代理
当属性为true时,Java网络通信将使用系统代理

  1. System.setProperty("java.net.useSystemProxies", "true");
  1. -Djava.net.useSystemProxies=true

手动设置代理

JVM属性可以手动设置代理 以下是比较常规的

HTTP

  • http.proxyHost:java.lang.String代理服务器Host
  • http.proxyPort:int代理服务器端口
  • http.proxyUserName:java.lang.String?代理服务器用户名
  • http.proxyPassword:java.lang.String?代理服务器密码
  • https.proxyHost:java.lang.StringHttps代理服务器Host
  • https.proxyPort:intHttps代理服务器端口
  • https.proxyUserName:java.lang.String?Https代理服务器用户名
  • https.proxyPassword:java.lang.String?Https代理服务器密码

不使用身份验证时,用户名和密码不必填写

  1. System.setProperty("http.proxyHost", "127.0.0.1");
  2. System.setProperty("http.proxyPort", "1080");
  3. // 不使用身份验证时,以下用户名和密码不必填写
  4. System.setProperty("http.proxyUserName", "user");
  5. System.setProperty("http.proxyPassword", "passwd");
  6. System.setProperty("https.proxyHost", "127.0.0.1");
  7. System.setProperty("https.proxyPort", "1080");
  8. // 不使用身份验证时,以下用户名和密码不必填写
  9. System.setProperty("https.proxyUserName", "user");
  10. System.setProperty("https.proxyPassword", "passwd");
  1. -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080 -Dhttp.proxyUserName=user -Dhttp.proxyPassword=passwd -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080 -Dhttps.proxyUserName=user -Dhttps.proxyPassword=passwd

SOCKS

  • socks.proxyHost:java.lang.String代理服务器Host
  • socks.proxyPort:int代理服务器端口
  • socks.proxyUserName:java.lang.String?代理服务器用户名
  • socks.proxyPassword:java.lang.String?代理服务器密码

不使用身份验证时,用户名和密码不必填写

  1. System.setProperty("socks.proxyHost", "127.0.0.1");
  2. System.setProperty("socks.proxyPort", "1080");
  3. // 不使用身份验证时,以下用户名和密码不必填写
  4. System.setProperty("socks.proxyUserName", "user");
  5. System.setProperty("socks.proxyPassword", "passwd");
  1. -Dsocks.proxyHost=127.0.0.1 -Dsocks.proxyPort=1080 -Dsocks.proxyUserName=user -Dsocks.proxyPassword=passwd

不要代理的Host

如果有不要代理的Host,可以使用nonProxyHosts:java.lang.String?来屏蔽代理
如果有多个服务器,以|符号作为分隔符

  • http.nonProxyHosts:java.lang.String?
  • https.nonProxyHosts:java.lang.String?
  • socks.nonProxyHosts:java.lang.String?
    1. System.setProperty("http.nonProxyHosts", "127.0.0.1|localhost|192.168.*.*|noproxy.example.com");
    2. System.setProperty("https.nonProxyHosts", "127.0.0.1|localhost|192.168.*.*|noproxy.example.com");
    3. System.setProperty("socks.nonProxyHosts", "127.0.0.1|localhost|192.168.*.*|noproxy.example.com");
    1. -Dhttp.nonProxyHosts=127.0.0.1|localhost|192.168.*.*|noproxy.example.com -Dhttps.nonProxyHosts=127.0.0.1|localhost|192.168.*.*|noproxy.example.com -Dsocks.nonProxyHosts=127.0.0.1|localhost|192.168.*.*|noproxy.example.com

    Gradle

    gradle可以通过命令设置代理
    比如我要执行gradlew build
    1. gradlew build -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080