Нужно пройти авторизацию на сайте http://vseti.by и в label 1 вывести Имя и фамилию Email и Пароль брать из Edit1 и Edit2 прежде чем писать проверьте исправность кода
А в чем проблема собственно? Indy + HTTP Analyzer никто не отменял, не так ли? З.Ы. Я думаю тут за вас никто и ничего не сделает, а ваше задание в принципе простое, если авторизация не замудрённая о потоках я думаю мы говорить не будем удачи в разработке
Ну так может возьмётесь за это? Если это не для вас не составит труда. Я не спец в этом деле а лишь учусь. И авторизация нужна в качестве образца, что бы разобрать необходимые для этого компоненты и их приминение. Обновил первый пост кинул ссылку вконтакте. Если кто то решиться помочь пишите голоса переведу от туда.
Для этого есть намного более подробная документация и демки, а учиться по коду с форумов ой какое опасное дело да пошел ты =/ очередной говнокодер, welcome
в документации не не описан метод авторизации пролистал книги 3 нигде подобного не нашел. И тему я создал не для выслушавания критики, а для того что бы помощь какую нибудь получить! Не знаете как помочь не пишите тогда вообще, не нужно набивать себе посты.
Ну как простейший пример: Code: post:=tstringlist.create; post.add('act=login');//сюда добавляешь post.add('log='+login);//данные, post.add('password='+pass);//которые наснифал http analyzer'ом result:= idhttp1.post('http://site.com/login.php',post); //собсно post-запрос Из result (код страницы после авторизации) выдираешь то, что тебе необходимо, суешь туда, куда нужно. login и pass - переменный, содержащие логин и пароль p.s Пример произвольный, под каждый сайт надо подстраиваться отдельно
спс и на этом.. Вот это "отдельное" меня и интересует. Каким образом можно определить все редиректы сайта и т.п..? пример как из result выдернуть необходимое можешь показать? к примеру ид или что нибудь такое.
Посмотрел сайт. Ничего сложного вообще. Посылаешь POST запрос, если логин и пароль верный сервер возвращает "good[id]" (вместо [id] - ID пользователя). Далее просто остается этот самый ИД взять и перейти по ссылке vseti.by/id[id]. Имя и фамилию можно вытащить из заголовка страницы, тоесть парсить значение после "<title>ВСети|" до "</title>"
В общем, вот накидал функцию, не проверял, но должна работать: Code: uses ..., IdCookieManager, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP; ---------------------------------------------- function GetNameVSetiBy(email, password:string):string; var http:TIdHTTP; cook:TIdCookieManager; s:TStringList; resp:string; begin http:=TIdHTTP.Create(nil); cook:=TIdCookieManager.Create(nil); http.CookieManager:=cook; http.HandleRedirects:=true; http.AllowCookies:=true; s:=TStringList.Create; s.Add('op=a_login_attempt'); s.Add('email='+email); s.Add('pass='+password); s.Add('expire=0'); result:='Error'; try resp:=http.Post('http://vseti.by/login.php', s); if pos('good', resp)>0 then begin resp:=copy(resp, 5, length(resp)-4); resp:=UTF8ToAnsi(http.Get('http://vseti.by/id'+resp)); delete(resp, 1, pos('<title>ВСети | ', resp)+length('<title>ВСети | ')-1); resp:=copy(resp, 1, pos('</title>', resp)-1); result:=resp; end; except end; http.Free; cook.Free; s.Free; end; В твоем случае использовать ее нужно так: Code: Label1.Caption:=GetNameVSetiBy(Edit1.Text, Edit2.Text); P.S. опять при копировании с Делфи кодировка сменилась, уже поправил
при запуске проекта и авторизации в Label 1 вместе с Именем выводит и весь html код тот что перед ним. также вместо русских букв вопросы. скрин http://www.easyfoto.ru/web20110421194334520.htm как это можно исправить?
попробуй поменять строку Code: resp:=UTF8ToAnsi(http.Get('http://vseti.by/id'+resp)); на Code: resp:=http.Get('http://vseti.by/id'+resp); П.С. на какой Делфе сидишь?
Уже разобрался. Проблему с кодом решил добавив строку: Code: resp:=copy(resp, 204, pos('<title>ВСети | ', resp)+150); А вопросы вылетали в delphi 9 версии. перейдя на delphi 7 всё стало на свои места.
Перейдя на 7 версию и ненужно менять смысл парсинга. просто с кодировкой получились траблы потому функция pos не работала так как надо было.
Что бы зайти на страницу другого пользователя также нужно использовать idHttp? как это будет выглядеть?