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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> httpClient и редирект, как боротся ? выскакивает RedirectException 
:(
    Опции темы
googol
Дата 2.2.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Использую httpclient для скачки обычного HTML 
но возникает проблема сайт вызывает редирект 

установка переменной ALLOW_CIRCULAR_REDIRECTS не приводи к положительному результату 
возникает исключение CircularRedirectException Maximum redirects (100) exceeded 

я скачиваю первую страницу http://betbase.info/ 

но по ссылке которая на этой странице 
http://betbase.info/?setupoption=lang&newvalue=eng я уже перейти не могу 

Как с этим боротся ?
Код

public static void main(String[] args) throws Exception { 
        String strURL = "http://www.betbase.info/"; 
        System.out.println("Target URL: " + strURL); 
        HttpState initialState = new HttpState(); 
        HttpClient httpclient = new HttpClient(); 
        httpclient.getHttpConnectionManager(). 
            getParams().setConnectionTimeout(60000); 
        httpclient.setState(initialState); 
        httpclient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); 
        httpclient.getParams().setBooleanParameter(HttpClientParams.ALLOW_CIRCULAR_REDIRECTS,true); 
        GetMethod httpget = new GetMethod(strURL); 
        int result = httpclient.executeMethod(httpget); 
        Cookie[] cookies = httpclient.getState().getCookies(); 
        System.out.println("Response status code: " + result); 
        System.out.println("Present cookies: "); 
        for (int i = 0; i < cookies.length; i++) { 
            System.out.println(" - " + cookies[i].toExternalForm()); 
        } 
        System.out.println(httpget.getResponseBodyAsString()); 
        strURL = "http://www.betbase.info/?setupoption=lang&newvalue=eng"; 
        System.out.println("Target URL: " + strURL); 


        initialState = new HttpState(); 
        initialState.addCookies(cookies); 
        httpclient.getHttpConnectionManager(). 
        getParams().setConnectionTimeout(60000); 
        httpclient.setState(initialState); 
        httpclient.getParams().setBooleanParameter(HttpClientParams.ALLOW_CIRCULAR_REDIRECTS,true); 
        httpclient.getParams().setParameter("Referer","http://www.betbase.info/"); 
        httpclient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); 

        httpget = new GetMethod(strURL); 

         result = httpclient.executeMethod(httpget); 

        System.out.println("Response status code: " + result); 

        cookies = httpclient.getState().getCookies(); 

        System.out.println("Present cookies: "); 
        for (int i = 0; i < cookies.length; i++) { 

            System.out.println(" - " + cookies[i].getValue()); 
        } 
        System.out.println(httpget.getResponseBodyAsString()); 
        httpget.releaseConnection(); 
    }


PM MAIL   Вверх
Platon
Дата 2.2.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



А зачем вы, позвольте узнать, initialState определяете 2 раза. 
Это не ваш код? Попробуйте для начала посмотреть FAQ про Apache HttpClient
PM MAIL ICQ   Вверх
googol
Дата 2.2.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да код мой 





Суть в том что второй вызов  executeMethod
не проходит
вываливается ошибка 
org.apache.commons.httpclient.CircularRedirectException: Circular redirect to 'http://www.betbase.info:80/'

PM MAIL   Вверх
Platon
Дата 2.2.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Увы, повторить ошибку не удалось. Всё проходит без проблем...
PM MAIL ICQ   Вверх
googol
Дата 2.2.2009, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



втом то и дело что  раз 5 запусти а потом уже не будет.


или на прямую скачать урл http://www.betbase.info/?setupoption=lang&newvalue=eng
не получается

Я уже запустил в броузере трассировку
вот результат


16:01:47.372[113мс][всего 113мс] Статус: 302[Found]
GET http://betbase.info/?setupoption=lang&newvalue=eng Флаги загрузки[LOAD_DOCUMENT_URI  LOAD_INITIAL_DOCUMENT_URI  ] Размер содержимого[0] Тип Mime[text/html]
   Заголовки запроса:
      Host[betbase.info]
      User-Agent[Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[ru,en-us;q=0.7,en;q=0.3]
      Accept-Encoding[gzip,deflate]
      Accept-Charset[windows-1251,utf-8;q=0.7,*;q=0.7]
      Keep-Alive[300]
      Connection[keep-alive]
      Referer[http://betbase.info/]
   Заголовки ответа:
      Date[Mon, 02 Feb 2009 14:01:50 GMT]
      Server[Apache]
      X-Powered-By[PHP/4.4.8]
      Set-Cookie[options=%26xupdate%3D528%26xtime%3D1233583310%26lang%3Deng%26userid%3Dy8e61233583310; expires=Tue, 02 Feb 2010 14:01:50 GMT; path=/; domain=betbase.info]
      Location[http://betbase.info/?setupoption=cookies&xupdate=528&xtime=1233583310&lang=eng&userid=y8e61233583310&lastURL=]
      Keep-Alive[timeout=15, max=100]
      Connection[Keep-Alive]
      Content-Type[text/html]
      Content-Length[0]


16:01:47.488[61мс][всего 61мс] Статус: 302[Found]
GET http://betbase.info/?setupoption=cookies&a...10&lastURL= Флаги загрузки[LOAD_DOCUMENT_URI  LOAD_REPLACE  LOAD_INITIAL_DOCUMENT_URI  ] Размер содержимого[0] Тип Mime[text/html]
   Заголовки запроса:
      Host[betbase.info]
      User-Agent[Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[ru,en-us;q=0.7,en;q=0.3]
      Accept-Encoding[gzip,deflate]
      Accept-Charset[windows-1251,utf-8;q=0.7,*;q=0.7]
      Keep-Alive[300]
      Connection[keep-alive]
      Referer[http://betbase.info/]
      Cookie[options=%26xupdate%3D528%26xtime%3D1233583310%26lang%3Deng%26userid%3Dy8e61233583310]
   Заголовки ответа:
      Date[Mon, 02 Feb 2009 14:01:50 GMT]
      Server[Apache]
      X-Powered-By[PHP/4.4.8]
      Location[http://betbase.info/]
      Keep-Alive[timeout=15, max=99]
      Connection[Keep-Alive]
      Content-Type[text/html]
      Content-Length[0]



16:01:47.550[73мс][всего 73мс] Статус: 302[Found]
GET http://betbase.info/ Флаги загрузки[LOAD_DOCUMENT_URI  LOAD_REPLACE  LOAD_INITIAL_DOCUMENT_URI  ] Размер содержимого[0] Тип Mime[text/html]
   Заголовки запроса:
      Host[betbase.info]
      User-Agent[Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[ru,en-us;q=0.7,en;q=0.3]
      Accept-Encoding[gzip,deflate]
      Accept-Charset[windows-1251,utf-8;q=0.7,*;q=0.7]
      Keep-Alive[300]
      Connection[keep-alive]
      Referer[http://betbase.info/]
      Cookie[options=%26xupdate%3D528%26xtime%3D1233583310%26lang%3Deng%26userid%3Dy8e61233583310]
   Заголовки ответа:
      Date[Mon, 02 Feb 2009 14:01:50 GMT]
      Server[Apache]
      X-Powered-By[PHP/4.4.8]
      Pragma[no-cache]
      Cache-Control[no-cache]
      Expires[Thu, 01 Jan 1970 00:00:00 GMT]
      Last-Modified[Mon, 02 Feb 2009 14:01:50 GMT]
      Location[http://www.betbase1.info/?uic=y8e61233583310]
      Keep-Alive[timeout=15, max=98]
      Connection[Keep-Alive]
      Content-Type[text/html]
      Content-Length[0]


16:01:47.626[509мс][всего 509мс] Статус: 302[Found]
GET http://www.betbase1.info/?uic=y8e61233583310 Флаги загрузки[LOAD_DOCUMENT_URI  LOAD_REPLACE  LOAD_INITIAL_DOCUMENT_URI  ] Размер содержимого[0] Тип Mime[text/html]
   Заголовки запроса:
      Host[www.betbase1.info]
      User-Agent[Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[ru,en-us;q=0.7,en;q=0.3]
      Accept-Encoding[gzip,deflate]
      Accept-Charset[windows-1251,utf-8;q=0.7,*;q=0.7]
      Keep-Alive[300]
      Connection[keep-alive]
      Referer[http://betbase.info/]
      Cookie[options=%26xupdate%3D531%26xtime%3D1233580822%26userid%3Dy9cf1233578765]
   Заголовки ответа:
      Date[Mon, 02 Feb 2009 14:01:49 GMT]
      Server[Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8b mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/4.4.7]
      X-Powered-By[PHP/4.4.7]
      Set-Cookie[options=%26xupdate%3D532%26xtime%3D1233583309%26userid%3Dy9cf1233578765; expires=Tue, 02 Feb 2010 14:01:49 GMT; path=/; domain=www.betbase1.info]
      Location[http://www.betbase1.info/]
      Keep-Alive[timeout=15, max=100]
      Connection[Keep-Alive]
      Content-Type[text/html]
      Content-Length[0]


16:01:48.138[510мс][всего 2787мс] Статус: 200[OK]
GET http://www.betbase1.info/ Флаги загрузки[LOAD_DOCUMENT_URI  LOAD_REPLACE  LOAD_INITIAL_DOCUMENT_URI  ] Размер содержимого[10544] Тип Mime[text/html]
   Заголовки запроса:
      Host[www.betbase1.info]
      User-Agent[Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5]
      Accept[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
      Accept-Language[ru,en-us;q=0.7,en;q=0.3]
      Accept-Encoding[gzip,deflate]
      Accept-Charset[windows-1251,utf-8;q=0.7,*;q=0.7]
      Keep-Alive[300]
      Connection[keep-alive]
      Referer[http://betbase.info/]
      Cookie[options=%26xupdate%3D532%26xtime%3D1233583309%26userid%3Dy9cf1233578765]
   Заголовки ответа:
      Date[Mon, 02 Feb 2009 14:01:49 GMT]
      Server[Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8b mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/4.4.7]
      X-Powered-By[PHP/4.4.7]
      Pragma[no-cache]
      Cache-Control[no-cache]
      Expires[Thu, 01 Jan 1970 00:00:00 GMT]
      Last-Modified[Mon, 02 Feb 2009 14:01:49 GMT]
      Keep-Alive[timeout=15, max=99]
      Connection[Keep-Alive]
      Content-Type[text/html]
      Content-Length[10544]





получается 4 редиректа с установкой куки и вызов с новыми параметрами
PM MAIL   Вверх
Platon
Дата 2.2.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Ну, тогда попробуй убрать автоматические редиректы
httpget.setFollowRedirects(false);
и потом анализируй куки на каждом шаге и сравнивай с теми, которые устанавливались в FF.
PM MAIL ICQ   Вверх
googol
Дата 2.2.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Теперь другое дело !
помогло
httpget.setFollowRedirects(false);
да после каждого запроса 
Код

        Header header=httpget.getResponseHeader("Location");
        strURL= header.getValue();
        System.out.println("Target URL: " + strURL);
         httpget = new GetMethod(strURL);


и так пока 
httpclient.executeMethod(httpget);

не вернет 200


не понятно почему 
    httpclient.getParams().setBooleanParameter(HttpClientParams.ALLOW_CIRCULAR_REDIRECTS,true);
не может отработать всего 6 редиректов


PM MAIL   Вверх
googol
Дата 2.2.2009, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



но теперь встала проблема сервер отдает в заголовке пусто Location


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

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

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


 




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


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

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