Помогите добавить новый статуса Вконтакте через IdHTTP

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by IngHack, 3 Oct 2011.

  1. IngHack

    IngHack New Member

    Joined:
    30 Aug 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Доброго времени суток!
    Я вот только начинаю работать с Вконтакте.ру, авторизация у меня проходит успешно.

    Но что я не могу сделать это продолжить процесс и добваить новый статус или другое действие через свой профиль.

    Он начинает новое действие если я делаю пост запрос.

    Вот код:
    Помогите мне с переходом на мою страницу :( и добавлением статуса или другого. Очень хотелосьбы узнать как это выполнить.
     
  2. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    Что это значит?
    Куки сохраняются?
     
  3. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    1) делаешь гет на http://vkontakte.ru/ если залогинился, то он сам даст редирект на твою страничку
    2) строку "изменить статус" ты не увидишь, если попробуешь свой Uns вывести в Memo или файл, то увидишь, что там проблемы с кодировкой
    3)
    в 1 месте у тебя есть
    блок try..except, а в других нету, это так нужно?
    4) Желательно делать так:
    Code:
    Data:=TStringList.Create;
    try
      ......
      ......
    finally
      Data.Free;
    end;
    Так ты гарантируешь освобождение памяти независимо от ошибок, возникающих в строках "......"
    5) Поддерживаю вопрос про куки
     
    #3 xophet, 3 Oct 2011
    Last edited: 3 Oct 2011
  4. IngHack

    IngHack New Member

    Joined:
    30 Aug 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Ну могли бы вы как нить подправить я попробовал как вы сказали:xophet. Непомогло.

    Вот что он даёт после авторизации:
    А не переходит на главную, вот поэтуму я после делаю GET, но он её смотрит как гость (((

    я добавил куки, ничего не помогает.
     
  5. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5

    Code:
    c1463be73b33386e27885c09d432cbffeccff49bdd6fc653a 132d3969b4c
    вот это копируешь в переменную, допустим назовем ее sid
    и дальше делай
    Code:
    HTTP.Request.CustomHeaders.Add('Cookie: remixchk=5; remixsid=' + sid);
    а после уже будешь считаться залогиненым
     
  6. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    С инди и куками проеб себе мозг неделю. В итоге обломился и делаю подобные реализации через TWebBrowser. Толи инди у мну кривые, толи руки, но с вэббраузером все пашет идеально...
     
  7. IngHack

    IngHack New Member

    Joined:
    30 Aug 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    а пробел обязателен?
    c1463be73b33386e27885c09d432cbffeccff49bdd6fc653a 132d3969b4c

    sid:='c1463be73b33386e27885c09d432cbffeccff49bdd6fc653a 132d3969b4c';

    Вот так я сделал:
     
  8. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    1) ты не понимаешь, тебе из ответа сервера, который ты получаешь надо это значение скопировать, а потом ЕГО, а не то значение, которое ты из моего сообщения скопировал.добавить туда, куда я указал
    2) скажу даже больше: пробел там явно лишний, его движок ачата добавил
     
  9. IngHack

    IngHack New Member

    Joined:
    30 Aug 2011
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    xophet
    Я прошу помоги мне)) Очень охоото узнать, я на других форумах писал, они вообще не комм-ли.
     
  10. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    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);
    Но хотелось бы заметить, что сначала читают литературу (хотябы какой-то минимум), а потом уже лезут программы писать
     
  11. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    У инди всегда был кривой менеджер куков, даже в последней версии.
     
  12. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Не знаю, не знаю, в последней версии все тьфу-тьфу-тьфу.
    P.S. в вышеприведенном примере мы не используем CookieManager, мы вручную устанавливаем куки, т.е. его даже создавать не нужно.
     
  13. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Не знаю, но та версия которая стоит в Delphi XE все равно на некоторых сайтах куки неверно воспринимает, там с доменами беда.