2

谷歌搜索并找到一些关于 Java 中代理设置的链接,但很少有事情让我有点困惑

1)我们真的需要设置 proxySet 属性吗?

System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "proxy host" );
System.getProperties().put( "proxyPort", "8080" );

2)设置http.proxyHost 和proxyHost 有什么区别?基本上,这是否意味着“proxyHost”将适用于所有协议,包括http、https、ftp等,而http.proxyHost仅适用于http协议?

System.getProperties().put( "proxyHost", "proxy host" );

或者

System.getProperties().put( "http.proxyHost", "proxy host" );

3)我们总是需要事后做吗?

System.getProperties().put( "proxySet", "false" );
System.getProperties().put( "proxyHost", "" );
System.getProperties().put( "proxyPort", "" );

4)关于在 Java 中进行代理设置的详细官方文档在哪里?

4

1 回答 1

4
  1. 不,没有这样的属性proxySet。它是 1997 年早已不复存在的 HotJava bean 的一个特性,并从那里泄露到了各种 3rd-party 书籍中。JDK 中从未有过这样的属性,我从 1.1.2 开始查看了所有这些属性。为了证明,设置另外两个并设置proxySet为 false 看看会发生什么。注意这个问题确实由文档回答,因为proxySet没有出现在那里。

  2. (a) 无,除非您不应该使用proxyHost/Port,因为它们已过时。(b) 文件没有这样说。

  3. 见 (1) proxySet。将其他设置为 null 而不是 "" 会更重要,但我不相信它有任何效果:一旦加载了属性,它们就会粘住。如果您需要动态控制代理,则需要使用java.net.Proxy.

  4. 这已在@tostao 的评论中得到解答。

于 2013-01-09T20:21:27.487 回答