В данной статье хотел бы вернуться к API ВК и рассказать как можно отправлять комментарии к фотографиям вконтакте. Вообще я прошлый пост немного модифицировал (изменил), то есть я просто добавил парсинг идентификатора фотографий, так как нам необходимо будет при формировании запроса указывать на какую фотографию (на какой идентификатор фотографии) отправлять запрос с комментарием. Также я добавил на вкладку «Фотографии» еще один TListBox - для того, чтобы туда выводить все идентификаторы фотографий и в TListBox в свойстве Visible установим в False, при просмотре фотографий мы буем просто в нашем TListBox выделять идентификатор и комментарий будет отправляться на нужную фотографию (всетаки по одному идентификатору сложно усмотреть, что за фотография и на какую отправлять комментарий). Теперь давайте немного поговорим о самом методе, который поможет нам отправлять комментарии к фотографиям, это:

  • photos.createComment

Теперь более подробно рассмотрим его параметры:

  • api_id - ну как всегда уже традиционно идентификатор нашего приложения.
  • sig - подпись безопасности
  • v - версия API, в документации ВК - 2.0, а рабочая — 3.0
  • pid - идентификатор фотографии, для которой необходимо отправлять комментарий
  • owner_id - идентификатор пользователя, на фотографии которого отправляется комментарий, по умолчанию текущий пользователь
  • message - текст комментария. Внимание не меньше 2-х символов
  • format - формат, выводимых данных (XML или JSON)
  • test_mode - если равен 1, то разрешает тестовые запросы к данным приложения

Ну а теперь, что я дополнительно установил на нашу вкладку помимо TListBox, это

  • TMemo
  • TButton

В TMemo у нас будет вводиться текст комментария, да не забываем создавать подпись безопасности в алфавитном порядке, иначе будет ошибка при отправке запроса. Вот как я дополнил код, который парсил url фотографий, кодом, который теперь и еще парсит идентификаторы фотографий

i:=1;
    while i<=length(logVK) do
     begin
      if pos('',logVK)<>0 then
       begin
        ListBox9.Items.Add(Pars(logVK,','',0));
        Delete(logVK,1,pos('',logVK));
        ListBox8.Items.Add(Pars(logVK,','',0));
        delete(logVK,1,pos('',logVK));
        i:=0;
       end;
      inc(i);
     end;

Теперь напишем код отправки комментария к фотографии, на событие TButton OnClick

procedure TForm1.Button21Click(Sender: TObject);
var
 sig:string;
begin
   try
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmessage='+AnsiToUtf8(Memo1.Text)+'method=photos.createCommentowner_id='+Edit7.Text+'pid='+ListBox9.Items[ListBox9.ItemIndex]+'v=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Clear;
    PostVK.Add('api_id=1918788');
    PostVK.Add('sig='+sig);
    PostVK.Add('v=3.0');
    PostVK.Add('method=photos.createComment');
    PostVK.Add('message='+AnsiToUtf8(Memo1.Text));
    PostVK.Add('pid='+ListBox9.Items[ListBox9.ItemIndex]);
    PostVK.Add('format=XML');
    PostVK.Add('owner_id='+Edit7.Text);
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    if count<0 then
     ShowMessage('Selected photo');
    if pos('error_code',logVK)<>0 then
     ShowMessage('Error send message')
    else
     ShowMessage('Message send');
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

Здесь должно быть все понятно, не забываем про версию API - 3.0, не забываем создавать подпись безопасности в алфавитном порядке. В следующих статьях будем получать комментарии, а также их удалять к фотографиям. Да и не забывайте отправлять текст комментария на русском языке перекодируя его сперва в другую кодировку, иначе могут быть иероглифы.

Исходники полного проекта качаем тут

Автор статьи — Andrey53

Метки: , , , , ,




К записи “Проект VK API в Delphi. Добавляем комментарии к фотографиям” оставлено комментариев: 2.

  1. ScorpioN:

    надо обновить проект. Многие запросы не робят уже..

  2. samsim:

    Очень полезная программка. Мне очень пригодилась.

Оставить комментарий

Вы можете использовать следующие теги:

*