Wur*_*bro 2 java https proxy networking http
我正在尝试建立一个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);
}
}
Run Code Online (Sandbox Code Playgroud)
Exception in .... java.lang.IllegalArgumentException: type DIRECT is not compatible with address null
我怎样才能使这个工作直接连接?尚未尝试代理.
正如我们所看到的,系统属性很强大,但不灵活.大多数开发人员都认为"全有或全无"的行为太严重了.这就是为什么决定在J2SE 5.0中引入一个新的,更灵活的API,以便可以使用基于连接的代理设置.
您可以使用Proxy.NO_PROXY来:
......不要使用任何代理.
做这样的事情:
private void setProxy()
{
if(proxyUrl != null)
{
SocketAddress addr = new InetSocketAddress(proxyUrl, proxyPort);
proxy = new Proxy(Proxy.Type.HTTP, addr);
}
else
{
proxy = Proxy.NO_PROXY;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1859 次 |
最近记录: |