Вобщем надо авторизироваться на wap.odnoklassniki.ru. В опере все норм. Отправляет заголовки: Code: POST /dk?st_id=login&tkn=1247 HTTP/1.1 User-Agent: Opera/9.52 (Windows NT 5.1; U; en) Host: mg2.odnoklassniki.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Referer: http://wap.odnoklassniki.ru/dk?st_id=main&tkn=1321 Connection: Keep-Alive Content-Length: 98 Content-Type: application/x-www-form-urlencoded fr_button=on&fr_email=agakamran%40mail.ru&fr_password=7646037&fr_go=%D0%92%D0%BE%D0%B9%D1%82%D0%B8 Получает заголовки: Code: HTTP/1.1 302 Found Server: Resin/2.1.16 Cache-Control: private Location: http://mg2.odnoklassniki.ru/dk;jsessionid=a9fQlIQnP909?st_id=userMain&tkn=7251 Set-Cookie: JSESSIONID=a9fQlIQnP909; path=/ Content-Length: 116 Connection: close Date: Fri, 24 Jul 2009 15:23:35 GMT Дальше есс-но редиректит, отправляя заголовки: Code: GET /dk;jsessionid=a9fQlIQnP909?st_id=userMain&tkn=7251 HTTP/1.1 User-Agent: Opera/9.52 (Windows NT 5.1; U; en) Host: mg2.odnoklassniki.ru Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Referer: http://wap.odnoklassniki.ru/dk?st_id=main&tkn=1321 Cookie: JSESSIONID=a9fQlIQnP909 Cookie2: $Version=1 Connection: Keep-Alive, TE TE: deflate, gzip, chunked, identity, trailers Получает заголовки: Code: HTTP/1.1 200 OK Server: Resin/2.1.16 Last-Modified: Tue, 04 Dec 2050 11:03:49 GMT Pragma: no-cache Cache-Control: no-cache, must-revalidate Content-Type: text/html;charset=UTF-8 Connection: close Transfer-Encoding: chunked Date: Fri, 24 Jul 2009 15:23:38 GMT Ну и тело тоже... Через инди - не хочет. Отправляет заголовки: Code: POST /dk?st_id=login&tkn=7844 HTTP/1.0 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 117 Connection: Keep-Alive, TE TE: deflate, gzip, chunked, identity, trailers Host: wap.odnoklassniki.ru Accept: text/html, */* Accept-Encoding: identity User-Agent: Mozilla/3.0 (compatible; Indy Library) fr_button=ons&fr_email=agakamran@mail.ru&fr_password=7646037&fr_go=%25D0%2592%25D0%25BE%25D0%25B9%25D1%2582%25D0%25B8 Получает заголовки: Code: HTTP/1.0 302 Found Server: Resin/2.1.16 Cache-Control: no-cache Location: http://wap.odnoklassniki.ru/dk;jsessionid=akkkZlcCROtb?st_id=userMain&tkn=4654 Expires: Thu, 01 Dec 1994 16:00:00 GMT Set-Cookie: JSESSIONID=akkkZlcCROtb; path=/ Content-Length: 116 Date: Fri, 24 Jul 2009 15:32:16 GMT Редиректит, отправляя заголовки: Code: POST /dk;jsessionid=akkkZlcCROtb?st_id=userMain&tkn=4654 HTTP/1.0 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 117 Connection: Keep-Alive, TE TE: deflate, gzip, chunked, identity, trailers Host: wap.odnoklassniki.ru Accept: text/html, */* Accept-Encoding: identity User-Agent: Mozilla/3.0 (compatible; Indy Library) Cookie: JSESSIONID=akkkZlcCROtb fr_button=ons&fr_email=agakamran@mail.ru&fr_password=7646037&fr_go=%25D0%2592%25D0%25BE%25D0%25B9%25D1%2582%25D0%25B8 Но получает ошибку №400 Bad Request. Code: HTTP/1.0 400 Bad Request Server: Resin/2.1.16 Cache-Control: no-cache Expires: Thu, 01 Dec 1994 16:00:00 GMT Set-Cookie: JSESSIONID=; expires=Thu, 01-Dec-1994 16:00:00 GMT Set-Cookie: AUTHCODE=; domain=.odnoklassniki.ru; path=/; expires=Thu, 01-Dec-1994 16:00:00 GMT Content-Type: text/html Content-Length: 135 Date: Fri, 24 Jul 2009 15:32:19 GMT После этого еррормесадж - 400... HandleRedirects стоит true. Собственно, почему? Прошу помощи...
А зачем через инди слать 2 раза запрос на авторизацию, причем второй раз почему то к /dk;jsessionid=akkkZlcCROtb?st_id=userMain&tkn=4654
В опере все ок - сначала отправляются заголовки, опера получает куки, с которыми гетом открывает страничку... А вот инди почему-то постом её открывает, хотя у меня идет всего один пост-запрос, и никаких гетов: Code: PostData:=TStringList.Create; PostData.Add('fr_button=ons'); PostData.Add('fr_email='+RegExp1.Match[1]); PostData.Add('fr_password='+RegExp1.Match[2]); PostData.Add('fr_go=%D0%92%D0%BE%D0%B9%D1%82%D0%B8'); IdHTTP1.Post('http://wap.odnoklassniki.ru/dk?st_id=login&tkn=7844',PostData);
Почему ошибка то, это редирект, который ты должен обработать. Если он выскакивает в виде исключения, то пиши запрос в try catch
try except, try finally, try ti_idiot Прежде чем кодить, почитай немного литературы... Вылетает эксепшен, и то под дебагером...а с помощью выше описанных функций ты сможешь обойти это! Ололо
Ты что то неправильно делаешь. Я с Indy не работал, поэтому сразу не могу сказать, как правильно делать. В общем твоя программа не правильно начинает отправлять заголовки, начиная от редиректа. Опера отправляет GET-запрос, а твоя программа POST-запрос, да и еще добавляет переменные к телу от предыдущего запроса. Выложи сюда проект, посмотрим, что можно сделать. А еще для таких программ (и вообще любых других, которые работают с сетью) советую использовать Winsock.
1. Code: PostData.Add('fr_go=%D0%92%D0%BE%D0%B9%D1%82%D0%B8'); можно написать просто Code: PostData.Add('fr_go=Войти'); Во всяком случае, у меня так нормально работает. Ну это так, совет чисто для удобства)) 2. Code: IdHTTP1.Post('http://wap.odnoklassniki.ru/dk?st_id=login&tkn=7844',PostData); ссылку, куда посылать POST-запрос нужно парсить с предыдущей страницы. т.е. сначала делаем Get-запрос: Code: StrPage:=IdHTTP1.Get('http://wap.odnoklassniki.ru/'); затем парсим StrPage и ищем ссылку вида http://wap.odnoklassniki.ru/dk?st_id=login&tkn=7844, где число в конце меняется каждый раз (именно поэтому и надо парсить). Затем заголовки делаю такие: Code: IdHTTP1.Request.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.00'; IdHTTP1.Request.Accept:='text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1'; IdHTTP1.Request.AcceptLanguage:='ru,ru-RU;q=0.9,en;q=0.8'; IdHTTP1.Request.AcceptCharSet:='iso-8859-1, utf-8, utf-16, *;q=0.1'; IdHTTP1.Request.AcceptEncoding:='deflate, gzip, x-gzip, identity, *;q=0'; IdHTTP1.Request.ContentType: application/x-www-form-urlencoded; Ну и POST-запрос после этого уже делаешь. HandleRedirects включен CookieManager подключен Всё работает