我正在尝试使用代理通过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")
我需要在没有用户知道端口的情况下这样做,并在连接之前在软件中选择它,因为我想这样做&#34;自动&#34;因为我可以设置HTTP代理从系统获取参数。
我需要这个因为我有一个奇怪的问题: 如果我没有在socks代理的运行时设置端口号,我的客户端无法正确使用AXIS2库和Web服务器服务器IF在Windows Internet选项面板中发出PUT或GET请求,代理服务器配置了选项:&#34;对所有协议使用相同的代理服务器&#34;
如果我取消标记该选项并且我手动设置了socks addres(192.168.xy端口1080),奇怪的是,连接继续进行,而不需要通过代码设置端口,并为所有协议使用相同的代理服务器。
我也可以尝试使用另一个更改socks端口,es 808.我能够连接服务器,如果在我的代码中我使用System.setProperty设置相同的端口(&#34; socksProxyPort&#34;, &#34; 808&#34;)
答案 0 :(得分:0)
库proxy-vole包含通过各种策略自动检测系统代理设置的代码。
至于您设置端口时代码的工作原理,我不知道。混合HTTP,FTP和SOAP感觉很奇怪。您可能希望安装本地代理服务器,该服务器允许您监视通过它的所有数据并将您的真实代理设置为其上游。这样,您就可以看到应用程序如何尝试与代理进行通信。那将为你提供解决原因的原因。