我正在尝试设置一个 Java 程序,其中每个线程都可以使用自己的代理。
现在我只找到了一种全局设置代理的方法。(http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html)
如前所述,这些设置会在使用这些选项调用的 VM 的整个生命周期内影响所有 http 连接。但是,使用 System.setProperty() 方法可能会具有稍微更动态的行为。
这是一段代码摘录,展示了如何做到这一点:
//设置http代理为webcache.mydomain.com:8080
System.setProperty("http.proxyHost", "webcache.mydomain.com"); System.setPropery("http.proxyPort", "8080");
更新
我尝试使用代理类,但当我不想使用所述代理时无法创建直接连接:
private void setProxy()
{
if(proxyUrl != null)
{
SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort);
proxy = new Proxy(Proxy.Type.HTTP, addr);
}
else
{
proxy = new Proxy(Proxy.Type.DIRECT, null);
}
}
Exception in .... java.lang.IllegalArgumentException: type DIRECT is not compatible with address null
我怎样才能让它适用于直接连接?还没试过代理。