我需要能够以编程方式访问某些网址。我正在使用URLConnection如下
URL url = new URL(http,
myProxy.com, // I need to know this parameter
-1,
http://www.example.com/);
如何获取托管网络中使用的代理服务器的名称。
当我使用像chrome这样的浏览器时,它会将我与向互联网发出请求的代理服务器联系起来。我如何获得代理服务器的名称?
答案 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。