![]() |
Indy 10 - проблема
Вобщем надо авторизироваться на wap.odnoklassniki.ru. В опере все норм.
Отправляет заголовки: Код:
POST /dk?st_id=login&tkn=1247 HTTP/1.1Код:
HTTP/1.1 302 FoundКод:
GET /dk;jsessionid=a9fQlIQnP909?st_id=userMain&tkn=7251 HTTP/1.1Код:
HTTP/1.1 200 OKЧерез инди - не хочет. Отправляет заголовки: Код:
POST /dk?st_id=login&tkn=7844 HTTP/1.0Код:
HTTP/1.0 302 FoundКод:
POST /dk;jsessionid=akkkZlcCROtb?st_id=userMain&tkn=4654 HTTP/1.0Код:
HTTP/1.0 400 Bad RequestHandleRedirects стоит true. Собственно, почему? Прошу помощи... |
А зачем через инди слать 2 раза запрос на авторизацию, причем второй раз почему то к /dk;jsessionid=akkkZlcCROtb?st_id=userMain&tkn=4654
|
В опере все ок - сначала отправляются заголовки, опера получает куки, с которыми гетом открывает страничку...
А вот инди почему-то постом её открывает, хотя у меня идет всего один пост-запрос, и никаких гетов: Код:
PostData:=TStringList.Create; |
Так убери HandleRedirects и обрабатывай редирект самостоятельно
|
Убираю HandleRedirects - выскакивает 302 ошибка...
|
Почему ошибка то, это редирект, который ты должен обработать.
Если он выскакивает в виде исключения, то пиши запрос в try catch |
Цитата:
|
try except, try finally, try ti_idiot
Прежде чем кодить, почитай немного литературы... Вылетает эксепшен, и то под дебагером...а с помощью выше описанных функций ты сможешь обойти это! Ололо |
Ты что то неправильно делаешь. Я с Indy не работал, поэтому сразу не могу сказать, как правильно делать.
В общем твоя программа не правильно начинает отправлять заголовки, начиная от редиректа. Опера отправляет GET-запрос, а твоя программа POST-запрос, да и еще добавляет переменные к телу от предыдущего запроса. Выложи сюда проект, посмотрим, что можно сделать. А еще для таких программ (и вообще любых других, которые работают с сетью) советую использовать Winsock. |
Цитата:
1. Код:
PostData.Add('fr_go=%D0%92%D0%BE%D0%B9%D1%82%D0%B8');Код:
PostData.Add('fr_go=Войти');2. Код:
IdHTTP1.Post('http://wap.odnoklassniki.ru/dk?st_id=login&tkn=7844',PostData);т.е. сначала делаем Get-запрос: Код:
StrPage:=IdHTTP1.Get('http://wap.odnoklassniki.ru/');Затем заголовки делаю такие: Код:
IdHTTP1.Request.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.00';HandleRedirects включен CookieManager подключен Всё работает |
| Время: 03:34 |