查找要在 System.setProperty( "socksProxyPort" ) 中设置的袜子代理端口 - Windows Java -



我正在尝试使用代理通过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感觉很奇怪。您可能需要安装一个本地代理服务器,该服务器允许您监控通过它的所有数据,并将您的真实代理设置为其上游。这样,您就可以看到应用程序如何尝试与代理进行通信。这将为你提供它为什么会断裂的线索。

最新更新