Здравствуйте, в этой статье я хотел бы поговорить про API VK в Delphi, давненько я не писал об этом, на этот раз я продолжаю работать со стеной пользователя, с которой нам придется работать еще как минимум 1-2 статьи. В этой статье посмотрим как можно отправлять сообщения на стену пользователя, да конечно если вы хотите, чтобы Вы могли отправлять сообщения на стену Вашего друга, то у него должно быть данное приложение и даны ему права не меньше 8192, да именно столько требует ВК для работы с сообщениями со стены. Ну что теперь давайте поговорим о самом методе, который посылает на стену пользователя сообщения, по умолчанию текущий пользователь, запомните это, то есть Вы. Итак метод
- wall.post
И отвечает за посылку сообщений на стену пользователей. Теперь рассмотрим немного параметры данного метода
- api_id - идентификатор приложения
- sig - подпись безопасности
- v - версия API. Текущая 3.0, а в документации ВК API написана 2.0, будьте внимательны
- owner_id - идентификатор пользователя, которому необходимо отправлять сообщение. По умолчанию текущий пользователь
- message - сообщение, отправляемое пользователю
- test_mode - если равен 1, то разрешает тестовые запросы к данным приложения
В результате этого будет возвращен результат в формате, который выберите Вы (XML или JSON), с идентификатором сообщения, которое Вы послали на стену пользователю. Да забыл сказать, что первые 3 параметра и параметр message являются обязательными. Что тут необходимо предусмотреть — это, чтобы Ваше сообщение было послано в нужной кодировке и чтобы на стене не отображались потом разные иероглифы, для этого я использую AnsiToUtf8. Также не забывайте в алфавитном порядке составлять подпись безопасности и конечно использовать версию API - 3.0. Ну я на вкладку «Стена» добавил пару TEdit и TButton и написал код, который отправляет на стену сообщения
procedure TForm1.Button16Click(Sender: TObject);
var
sig:string;
i:integer;
begin
try
PostVK:=TStringList.Create;
sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmessage='+AnsiToUtf8(Edit6.Text)+'method=wall.postowner_id='+Edit5.Text+'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=wall.post');
PostVK.Add('format=XML');
PostVK.Add('message='+AnsiToUtf8(Edit6.Text));
PostVK.Add('owner_id='+Edit5.Text);
PostVK.Add('sid='+Pchar(LabelSid.Caption));
logVK:=IdHTTP1.Post('https://api.vkontakte.ru/api.php',PostVK);
if pos('error_code',logVK)=0 then
begin
Showmessage('Message send');
end
else
begin
ShowMessage('Not message send');
end;
PostVK.Free;
except
on e:Exception do
PostVK.Free;
end;
end;
Ну что в следующих статьях продолжим разговаривать про методы, которые позволяют работать со стеной пользователя в ВК, а также был предложен вариант парсинга XML или JSON в удобной структуре, то есть, чтобы можно было как-то очень легко обращаться к полям XML-ответа с сервера, я над этим подумаю и наверное, что-то подобное придумаю, а также что-то я давно забросил свой модуль, надо наращивать позиции, а то тут уже довольно много прошли, а модуль как-то не обновляется.