我有一个需要连接到网络的应用程序。在处理代理连接时我需要一些建议。目前,用户设置代理设置,因此我使用输入的信息进行连接。有没有更好的方法来处理这种情况。
我的意思是像chrome这样打开系统的代理设置,然后使用它们。怎么做并检索这些值?还有其他理想的方法吗?
其次,目前我正在检查是否有代理集。如果是,我正在使用url.openConnection(proxy);
如果不是那么简单url.openConnection();
是否有更清洁的方式呢?系统自动与代理集连接的地方。
答案 0 :(得分:3)
//Set the http proxy to webcache.mydomain.com:8080
System.setProperty( "http.proxyHost", "webcache.mydomain.com" );
System.setProperty( "http.proxyPort", "8080" );
System.setProperty( "https.proxyHost", "webcache.mydomain.com" );
System.setProperty( "https.proxyPort", "8080" );
答案 1 :(得分:2)
从源代码我们可以使用
System.getProperties().put("http.proxyHost", "ProxyURL");
System.getProperties().put("http.proxyPort", "ProxyPort");
System.getProperties().put("http.proxyUser", "UserName");
System.getProperties().put("http.proxyPassword", "Password");
命令行:
$> java -Dhttp.proxyHost=proxyhostURL -Dhttp.proxyPort=proxyPortNumber
-Dhttp.proxyUser=UserName -Dhttp.proxyPassword=Password ProxyClassHere
答案 2 :(得分:0)
看看这个: How do I set the proxy to be used by the JVM
可以通过使用一些标志启动JVM来完成: JAVA_FLAGS = -Dhttp.proxyHost = 10.0.0.100 -Dhttp.proxyPort = 8800 java $ {JAVA_FLAGS}
答案 3 :(得分:0)
我遇到了同样的问题,想要使用SOAP Client调用1个WSDL。 我能够通过SOAP UI调用WSDL但是当我尝试通过我的JAVA代码包装请求时,它失败了。 我发现了问题,我的java代码没有拿起代理的设置。 我通过在Eclipse中设置这些代理来明确地尝试: Eclipse - > Windows - >偏好 - > Geneal - >网络连接。 将Native更改为Manual并添加了proxy&港口。 不过,它没有用。 最后,我在我的代码中只添加了一行,它全部工作: System.setProperty(“java.net.useSystemProxies”,“true”); 如果您的JAVA主页设置正确,这肯定会在Eclipse中获取系统集代理。
由于 Saurabh M. Chande
答案 4 :(得分:0)
您需要的所有内容:https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html
建议:请勿使用System.getProperties().put
,请参阅http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/Properties.java
/**
* ....
* Because {@code Properties} inherits from {@code Hashtable}, the
* {@code put} and {@code putAll} methods can be applied to a
* {@code Properties} object. Their use is strongly discouraged as they
* allow the caller to insert entries whose keys or values are not
* {@code Strings}. The {@code setProperty} method should be used
* instead.
* ....
*/
(如果您将Properties::put
与非String值一起使用,则会遇到麻烦)