Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > IdHttp.Get возвращает поток пустой |
Автор: Akella 11.12.2012, 10:35 | ||||
Почему-то IdHTTP1.Get возвращает пустоту. Куки и HandleRedirects включены. Посмотрел RequestHeaders у FireFox`a и указали эти же параметры у IdHTTP1. К TIdHTTP прикрепил TIdLogFile. В лог сохраняется информация. Файл занимает ~134 Kb. Вторая строка лога:
дальше идёт информация вроде нужная, вижу в логе обрывки текста, названия меню и т.д. Вот что меня волнует: HTTP/1.1 302 Moved Temporarily
Файл d:\22.txt пустой, разером 0 байт! Хочу скачать пару страничек отсюда: aviso.ua/dnepropetrovsk/list.php?r=101 DXE2, Indy10.5.8 (та версия, что входит в поставку дельфи) Устанавливать и изучать что-то вроде синапс не очень хочется |
Автор: Coobick 11.12.2012, 16:45 | ||
Добавь КуК... HTTP.Request.CustomHeaders.text := 'Cookie: PHPSESSID=7777; cityid=1'; ![]()
|
Автор: Akella 12.12.2012, 10:43 |
В Delphi XE3 работает без лишних телодвижений. В Delphi 2007 c Indy 10.5.8 тоже Добавлено через 3 минуты и 11 секунд Пользователь в браузере ведь никаких куков ручками не указывает. |
Автор: Akella 12.12.2012, 11:08 |
Вот рабочий пример, скомпилированный в DXE3 http://ovrload.ru/t/122_dxe3_test_indy.zip |
Автор: Coobick 12.12.2012, 11:45 | ||
ХЕ2 Indy 10.5.8. Не работает твой пример... ![]() Кук задаётся при посещении страницы.. в ответе сервера. у данной страницы ...........o.ua/dnepropetrovsk/list.php?r=101 Он уже иной.. cityid=3; expires=Thu, 12-Dec-2013 08:36:07 GMT; path=/ А именно, что нам нужно это cityid=3. Заметь! для той что я казал ранее был нужен cityid=1, с ним открывая эту будет 302. При первом посещении даётся этот Кук и передресует туда же, но открываем мы её уже с КуКом который получили. Пока будет неверно, будет 302... 15-20раз. Вопрос в другом, от чего Индя (АllowCookies:=True;) его сама не подставляет при переадресации. |
Автор: Matematik 12.12.2012, 12:16 | ||
Это Firefox https://gist.github.com/4266006 А это Indy https://gist.github.com/4266093 Сервер постоянно перенаправляет (поле Location:) на адреса начинающиеся на //, Firefox обрабатывает это как положено, а Indy - нет. Оно так и крутится до бесконечности, пока не достигнет RedirectMaximum, и возвращает пустоту. Можно подставить костыль в OnRedirect
тогда пойдет как положено https://gist.github.com/4266299 |
Автор: Coobick 12.12.2012, 12:48 | ||||||
Так?
Не пойдёт... во всяком случае у меня подобное не помагает. Кук не передаётся! Точнее не ТоТ, что надо...Нужно оба или тот что надо. http://radikal.ru/F/s43.radikal.ru/i099/1212/b5/2e0ebb32231f.jpg.html http://radikal.ru/F/s020.radikal.ru/i707/1212/41/1ad80605d453.jpg.html Добавляем просто нужный КуК и более НИЧЕГО..
И имеем то что требуется.. http://radikal.ru/F/s47.radikal.ru/i116/1212/99/2a2bfd318198.jpg.html |
Автор: Akella 20.12.2012, 13:39 |
я так и сделал но в лису-то я ничего не добавлял Добавлено через 21 секунду и в xe3 без проблем |
Автор: Чучмек 20.12.2012, 14:42 |
RedirectMaximum у TIdHTTP сколько? Coobick, если включен редирект и кукеменджер, зачем кук в ручную добавлять? |
Автор: Coobick 20.12.2012, 23:04 | ||
Ну видимо косяк в Инди.. хотя вроде версии одинаковые).. Но суть то проблемы понятна.. от чего было "пусто"? А вот как "проще" это решить это другой вопрос.. Проще наверно синапс заюзать.. Либо замарачиваться к кук-менеджером.. |
Автор: kami 21.12.2012, 10:47 | ||
Злостный оффтопик, но не могу удержаться ![]() (с) Винни-Пух:
|
Автор: Чучмек 22.12.2012, 20:57 | ||
Однозначно. Кукеменеджер не распознает куки, у которых указанно время жизни. Можно такие куки добавлять самостоятельно вот решение для XE2
|