如何在托管网络中获取代理服务器的名称或IP?

时间:2015-09-19 03:25:00

标签: java urlconnection proxy-server

我需要能够以编程方式访问某些网址。我正在使用URLConnection如下

URL url = new URL(http,         
                  myProxy.com, // I need to know this parameter   
                  -1,              
                  http://www.example.com/);    

如何获取托管网络中使用的代理服务器的名称。

当我使用像chrome这样的浏览器时,它会将我与向互联网发出请求的代理服务器联系起来。我如何获得代理服务器的名称?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用java ProxySelector类来完成它,她是来自java proxy configuration指南的简短示例:

private Proxy findProxy(URI uri)
{
   try
   {
      ProxySelector selector = ProxySelector.getDefault();
      List<Proxy> proxyList = selector.select(uri);
      if (proxyList.size() > 1)
           return proxyList.get(0);
   }
   catch (IllegalArgumentException e)
   {
   }
   return Proxy.NO_PROXY;
}

要获取主机名和IP地址,可以使用InetSocketAddress,您可以从Proxy实例获取:

InetSocketAddress addr = (InetSocketAddress) proxy.address(); 
if(addr != null) { 
  System.out.println("proxy hostname : " + addr.getHostName()); 
  System.out.println("proxy port : " + addr.getPort()); 
} 

但据我所知,需要设置系统属性来执行此操作:

System.setProperty("java.net.useSystemProxies","true");

另一个解决方案是使用proxy-vole library来执行此操作。这是一些usage examples