Доброго времени суток! Я вот только начинаю работать с Вконтакте.ру, авторизация у меня проходит успешно. Но что я не могу сделать это продолжить процесс и добваить новый статус или другое действие через свой профиль. Он начинает новое действие если я делаю пост запрос. Вот код: Помогите мне с переходом на мою страницу и добавлением статуса или другого. Очень хотелосьбы узнать как это выполнить.
1) делаешь гет на http://vkontakte.ru/ если залогинился, то он сам даст редирект на твою страничку 2) строку "изменить статус" ты не увидишь, если попробуешь свой Uns вывести в Memo или файл, то увидишь, что там проблемы с кодировкой 3) в 1 месте у тебя есть блок try..except, а в других нету, это так нужно? 4) Желательно делать так: Code: Data:=TStringList.Create; try ...... ...... finally Data.Free; end; Так ты гарантируешь освобождение памяти независимо от ошибок, возникающих в строках "......" 5) Поддерживаю вопрос про куки
Ну могли бы вы как нить подправить я попробовал как вы сказали:xophet. Непомогло. Вот что он даёт после авторизации: А не переходит на главную, вот поэтуму я после делаю GET, но он её смотрит как гость ((( я добавил куки, ничего не помогает.
Code: c1463be73b33386e27885c09d432cbffeccff49bdd6fc653a 132d3969b4c вот это копируешь в переменную, допустим назовем ее sid и дальше делай Code: HTTP.Request.CustomHeaders.Add('Cookie: remixchk=5; remixsid=' + sid); а после уже будешь считаться залогиненым
С инди и куками проеб себе мозг неделю. В итоге обломился и делаю подобные реализации через TWebBrowser. Толи инди у мну кривые, толи руки, но с вэббраузером все пашет идеально...
а пробел обязателен? c1463be73b33386e27885c09d432cbffeccff49bdd6fc653a 132d3969b4c sid:='c1463be73b33386e27885c09d432cbffeccff49bdd6fc653a 132d3969b4c'; Вот так я сделал:
1) ты не понимаешь, тебе из ответа сервера, который ты получаешь надо это значение скопировать, а потом ЕГО, а не то значение, которое ты из моего сообщения скопировал.добавить туда, куда я указал 2) скажу даже больше: пробел там явно лишний, его движок ачата добавил
Code: function GetSid(s:string):string; var i:integer; begin Result:=''; if Pos('sid'', ''',LowerCase(s))=0 then Exit; Result:=s; Delete(Result,1,Pos('sid',LowerCase(s))+6); Result:=Copy(Result,1,Pos('''',Result)-1); end; Делаешь так: допустим ответ сервера при авторизации у тебя в переменной UNS, Тогда: Code: sid:=GetSid(Uns); if sid='' then begin ShowMessage('Не удалось залогинится'); Exit; end else HTTP.Request.CustomHeaders.Add('Cookie: remixchk=5; remixsid=' + sid); Но хотелось бы заметить, что сначала читают литературу (хотябы какой-то минимум), а потом уже лезут программы писать
Не знаю, не знаю, в последней версии все тьфу-тьфу-тьфу. P.S. в вышеприведенном примере мы не используем CookieManager, мы вручную устанавливаем куки, т.е. его даже создавать не нужно.
Не знаю, но та версия которая стоит в Delphi XE все равно на некоторых сайтах куки неверно воспринимает, там с доменами беда.