Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменять в цикле адреса прокси серверов 
:(
    Опции темы
Samotnik
Дата 13.10.2011, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Привет.
Есть веб приложение, которое работает через прокси сервер. Т.е. все запросы шлёт не напрямую, а через proxy. Нужно сделать так, что если вдруг этот прокси сервер перестал работать, нужно менять адрес. 
Список адресов есть в xml файле, который приложение читает.
Вот метод, который это выполняет:
Код

    @Override
    public Element loadUrl(String url) {
        Element result = null;
        boolean isNeedTryNextIP = true;
        int activeProxy = proxyKeeper.getActiveProxy(); //тут содержится текущий адрес, тот с которым можно работать, изначально он первый
        List<ProxySocket> proxyList = proxyKeeper.getProxyList(); // тут весь список прокси адресов из xml
        String ip = "";
        int port = 0;
        while (isNeedTryNextIP) {
            isNeedTryNextIP = false;
            try {
                if (!proxyList.isEmpty()) {
                    ip = proxyList.get(activeProxy).getIp();
                    port = Integer.valueOf(proxyList.get(activeProxy).getPort());
                    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ip, port));
                    URL urlObject = new URL(url);
                    URLConnection urlConnection = urlObject.openConnection(proxy);
                    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                    DocumentBuilder db = dbf.newDocumentBuilder();
                    Document doc = db.parse(urlConnection.getInputStream());
                    Element root = doc.getDocumentElement();
                    result = root;
                } else {
                    logger.info("There are no one proxy address!");
                }
            } catch (ParserConfigurationException e) {
                logger.warn("Can not configure the parser. {}", e.getMessage());
            } catch (SAXException e) {
                logger.warn("Can not parse the page. {}", e.getMessage());
            } catch (IOException e) {
                logger.info("IP: {} and port: {} are not valid, use next.", ip, port);
                logger.info(e.getMessage());
                ++activeProxy;
                if (activeProxy >= proxyList.size()) {
                    logger.info("Warning! There are no more valid IP addresses! Check them again");
                    activeProxy = 0;
                }
                proxyKeeper.setActiveProxy(activeProxy);
                isNeedTryNextIP = true;
            }
        }
        return result;
    }

Но у меня есть подозрение, что он не работает. Как вообще проверить, на какой в итоге адрес запрос посылается через прокси или нет ?

Это сообщение отредактировал(а) Samotnik - 13.10.2011, 16:51
PM MAIL   Вверх
Rigid
Дата 13.10.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.1.2007

Репутация: нет
Всего: нет



Можно попробовать что то типа такого:
Код

ProxySelector sel = ProxySelector.getDefault();
List<Proxy> proxy = sel.select(new URI("google.com"));
....
System.out.println(proxy.get(0).address());





PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.