Поиск прокси-порта socks для установки в System.setProperty(socksProxyPort) - windows java -

Я пытаюсь установить FTP-соединение через HTTP с использованием прокси. Я установил хост и порт прокси-сервера 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, мой клиент не может правильно выполнить запрос PUT или GET, используя библиотеки AXIS2 и сервер веб-сервиса, ЕСЛИ в панели параметров Интернета Windows прокси-сервер настроен с опцией: "использовать один и тот же прокси-сервер для всех протоколов"

если я отключу эту опцию и установлю вручную адреса socks (192.168.xy, порт 1080), как ни странно, соединение будет продолжаться без необходимости устанавливать кодом порт с использованием одного и того же прокси-сервера для всех протоколов.

Я также могу попытаться изменить порт socks, используя другой, es 808. Я могу подключиться к серверу, если в своем коде я установил тот же порт с System.setProperty("socksProxyPort","808")


person alex    schedule 16.02.2015    source источник


Ответы (1)


Библиотека proxy-vole содержит код для автоматического определения системных настроек прокси-сервера с помощью различных стратегий.

Что касается того, почему ваш код работает, когда вы устанавливаете порт, я не знаю. Странно смешивать HTTP, FTP и SOAP. Вы можете установить локальный прокси-сервер, который позволит вам отслеживать все данные, проходящие через него, и установить ваш реальный прокси-сервер в качестве восходящего. Таким образом, вы сможете увидеть, как ваше приложение пытается взаимодействовать с прокси. Это даст вам подсказки, почему он ломается.

person Aaron Digulla    schedule 16.02.2015
comment
я пытаюсь использовать proxy-vole, но я в той же ситуации. Мне нужно знать точный порт socks и установить его, потому что и стандартный селектор прокси, и p-v не решают проблему. Я прочитал много сообщений в Интернете о проблемах с использованием socks (также когда они вам не нужны), поэтому я просто хочу, чтобы только автоматически определял порт socks и устанавливал его. Я читал документацию proxyvole, но не проще найти метод чтобы можно было извлечь его - person alex; 16.02.2015
comment
Я думаю, что идея proxy-vole заключается в том, что вы просто позволяете ему выполнить настройку вместо того, чтобы пытаться принудительно ввести определенные значения в системные свойства. Я чувствую, что настройки прокси вашей ОС неверны; возможно, вы не можете использовать один и тот же прокси для всего. - person Aaron Digulla; 16.02.2015