Здравствуйте, в этой новости хотел бы поговорить о том, как можно отправить сообщение из своего приложения другу. Тут были проблемы с кодировкой отправляемых сообщений, то есть если просто отправлять, то сообщения пользователю приходили иероглифами, но это проблема решаема. Дальше также хочу заметить, что в документации ВК по данному методу, также версия API была записана как 2.0, хотя на самому деле необходимо использовать 3.0, такие замечательные методы, а информация по ним какая-то устаревшая. Ну для отправки сообщений в ВК существует отличный метод
- messages.send
Давайте пройдемся по параметрам данного метода
- api_id — идентификатор приложения
- sig - подпись безопасности
- v - версия API (в документации ВК записана как 2.0, но необходимо 3.0)
- uid - идентификатор пользователя, которому необходимо отправлять сообщение (по умолчанию текущий пользователь)
- message - текст сообщения
- title - заголовок сообщения
- type - 0 — обычное сообщение, 1 — сообщение из чата
- format - XML или JSON
- test_mode - если равен 1, то разрешает тестовые запросы к данным приложения.
Первые 5 параметров являются обязательными. Все идет по стандарту, создаем нашу подпись безопасности, тут не забудьте создать ее в алфавитном порядке, иначе будете получать сообщение об ошибки, что подпись не верна. Я добавил на вкладку «Сообщение»
- TEdit
- TButton
Ну TEdit для того, чтобы Вы смогли написать сообщение, которое необходимо отправить. Также сообщения отправляются id-пользователю тому, id, который записан в Edit1, который находится на вкладке «Профиль«, то есть Вы можете авторитизироваться получить список сообщений и в TListBox выбрать, тот id, которому Вы хотите отправить сообщение затем написать данное сообщение и нажать на кнопку «Отправить«, после этого сообщение будет доставлено успешно. На TButton события OnClick я написал следующий код
procedure TForm1.Button12Click(Sender: TObject);
var
sig:string;
begin
try
PostVK:=TStringList.Create;
sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmessage='+AnsiToUtf8(Edit4.Text)+'method=messages.senduid='+Edit1.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=messages.send');
PostVK.Add('uid='+Edit1.Text);
PostVK.Add('format=XML');
PostVK.Add('message='+AnsiToUtf8(Edit4.Text));
PostVK.Add('sid='+Pchar(LabelSid.Caption));
logVK:=IdHTTP1.Post('https://api.vkontakte.ru/api.php',PostVK);
if pos('error_code',logVK)=0 then
ShowMessage('Message Send Ok')
else
ShowMessage('Not message send');
PostVK.Free;
except
on e:Exception do
PostVK.Free;
end;
end;
Теперь поговорим о самой кодировки, помните я говорил, что русские символы приходят иероглифами, для того, чтобы решить данную проблему я использовал функцию преобразования типов AnsiToUtf8, которая мне и помогла избежать данной проблемы. С английскими символами проблем не наблюдалось. Ну что вроде бы все рассказал по данному методу, дальше рассмотрим как удалять сообщения.