Сайт Koder.kz сайт для Delphi программистов.

koder.kz

Web or desctop App Developer

Написать

Добавил admin | Категория Наши материалы | 07 Ноября 2014


Доброго времени суток уважаемые читатели! Как вы наверное уже успели догадаться по иконке данного поста речь у нас сегодня пойдет вновь пойдет разговор про API VK. Сегодня я предлагаю вам разобрать такую замечательную функцию как wall.post. Данная функция как сказано на официальной старице вконтакте «Публикует новую запись на своей или чужой стене.»
Данный метод позволяет создать новую запись на стене, а также опубликовать предложенную новость или отложенную запись.
Основные параметры данного метода:

owner_id идентификатор пользователя или сообщества, на стене которого должна быть опубликована запись.
friends_only 1 — запись будет доступна только друзьям, 0 — всем пользователям. По умолчанию публикуемые записи доступны всем пользователям.
флаг, может принимать значения 1 или 0
from_group данный параметр учитывается, если owner_id < 0 (запись публикуется на стене группы). 1 — запись будет опубликована от имени группы, 0 — запись будет опубликована от имени пользователя (по умолчанию).
флаг, может принимать значения 1 или 0
message текст сообщения (является обязательным, если не задан параметрattachments)
строка
attachments список объектов, приложенных к записи и разделённых символом ",".

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

Из процедуры Button1Click(Sender: TObject); которую мы писали в первом посте. Мы переопределили две переменные Token, IdUser : string


var
  Form1: TForm1;

  Token, IdUser : string ;

implementation

{$R *.dfm}

Добавим на форму:

  • Tmemo
  • TButton
  • TLabel
  • И Statusbar для отображения результата выполнения запроса.

И напишем вот такой вот код для кнопки «отправить».


procedure TForm1.Button2Click(Sender: TObject);
  var
    Param : TStringList ;
    Url   : string   ;
    I     : Integer  ;
begin
  Param := TStringList.Create ;
  Param.Add('owner_id=' + IdUser);
  Param.Add('message=' + Memo1.Lines.Text);
  Url := Format('https://api.vk.com/method/wall.post?access_token=%s', [Token]);
  for I := 0 to Param.Count - 1 do
    Param.ValueFromIndex[I] := IdHTTP.Url.ParamsEncode(Param.ValueFromIndex[I]);
  try
    IdHTTP.Post(Url, Param);
    if IdHTTP.ResponseCode = 200 then
      StatusBar1.Panels[0].Text := 'Пост добавлен'
    else
      StatusBar1.Panels[0].Text := 'Ошибка'

  except on E : Exception do
  begin
    MessageBox(Application.Handle, PChar(Format('Ошибка: %s',[e.Message])), 'Error', MB_ICONHAND);
    exit ;
  end;
  end;
  FreeAndNil(Param);
end;

вот такой вот не хитрый код :)
много видел ошибочного кода в интернете, у всех примерно одна ошибка, вместо POST люди почему то используют GET. Но мы то с вами знаем что запросом POST мы передаем данные а вот GET запросом мы их получаем. Следовательно мы в Param : TStringList ; определяем список параметров и их значений для того что бы потом передать эти значения POST запросом на URL адрес который мы сформировали в переменной URL.
Ну вот наверное и все на сегодня. Статья как всегда получилось без лишних слов :)
исходники программы тут, Пароль, как обычно qwerty.