我正在尝试使用代理通过HTTP建立FTP连接。我使用以下代码设置HTTP和HTTPS代理主机和端口:
system.setProperty("java.net.useSystemProxies","true");
List<Proxy> l = null;
try {
l = ProxySelector.getDefault().select(new URI("http://foo/bar"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
if (l != null) {
for (Iterator iter = l.iterator(); iter.hasNext();) {
java.net.Proxy proxy = (java.net.Proxy) iter.next()
InetSocketAddress addr = (InetSocketAddress) proxy.address();
if (addr != null) {
System.setProperty("http.proxyHost", addr.getHostName());
System.setProperty("http.proxyPort", Integer.toString(addr.getPort()));
System.setProperty("https.proxyHost", addr.getHostName());
System.setProperty("https.proxyPort", Integer.toString(addr.getPort()));
System.setProperty("socksProxyHost",addr.getHostName());
System.setProperty("socksProxyPort","xxxx" );
我想知道是否有办法知道哪个是关于代理的配置的互联网端口(在windows互联网代理控制面板中),可以在运行时设置它,代码为:
System.setProperty("socksProxyPort")
我需要在用户不知道端口的情况下进行,并在连接开始之前在软件中选择它。我想"自动"进行,因为我可以设置HTTP代理从系统中获取参数。
我需要这个,因为我有一个奇怪的问题:如果我在socks代理的运行时没有设置端口号,我的客户端无法使用AXIS2库和Web服务服务器正确地发出PUT或GET请求。如果在windows internet选项面板中,代理服务器配置有选项:"对所有协议使用同一代理服务器"
如果我取消标记该选项并手动设置socks地址(192.168.x.y端口1080),奇怪的是,连接可以继续进行,而无需通过代码设置端口,并对所有协议使用相同的代理服务器。
我也可以尝试使用另一个es 808来更改socks端口。如果我在代码中使用System.setProperty("socksProxy端口","808")设置了相同的端口,我就可以连接到服务器
库代理vole包含通过各种策略自动检测系统代理设置的代码。
至于为什么当你设置端口时你的代码能工作,我不知道。混合使用HTTP、FTP和SOAP感觉很奇怪。您可能需要安装一个本地代理服务器,该服务器允许您监控通过它的所有数据,并将您的真实代理设置为其上游。这样,您就可以看到应用程序如何尝试与代理进行通信。这将为你提供它为什么会断裂的线索。