пятница, 8 июля 2011 г.

Webexception: Слишком много попыток автоматического перенаправления

Или так: "Webexception: Too many redirects".
Неблагодарное занятие парсить html страницы. Постоянно приходится менять код.Полгода приложение работало нормально закачивало ссылку, а теперь выдает ошибку. Chrome качает без проблем, а программа не может. Пришлось разбираться с помощью Fiddler.
   Итак можно четко увидеть, что на мой запрос сервер возвращает HTTP 302, то есть делает редирект на ту же самую страницу (Location:  http://etp.zakazrf.ru/Reductions.aspx), одновременно устанавливает cookies (Set-cookies: ASP.NET_SessionId....).  В моем приложении  cookies не обрабатовались, поэтому  программа постоянно получала HTTP 302, делала редирект на Location, и так по кругу, пока счетчик перенаправлений не сравнялся с параметром
request.MaximumAutomaticRedirections ( по умолчанию равен 50).
Пришлось изменить код

9 комментариев:

  1. Спасибо большое!!!

    ОтветитьУдалить
  2. В первом запросе не хватает
    request->CookieContainer = gcnew CookieContainer();
    Иначе, куки не записываются в response.

    ОтветитьУдалить
  3. большое спасибо. Очень помогло.

    ОтветитьУдалить
  4. Просто выручил! Хотя позже оказалось, что библиотека HtmlAgilityPack делает то же самое одной командой Load.
    HtmlDocument hd = new HtmlDocument();
    HtmlWeb hw = new HtmlWeb();
    hd = hw.Load("uri");
    Ну, или в моём случае (с прокси):
    hd = hw.Load("uri", "proxy-host", "proxy-port", "username", "password");

    ОтветитьУдалить