Проект VK API в Delphi. Отправка сообщений

Здравствуйте, в этой новости хотел бы поговорить о том, как можно отправить сообщение из своего приложения другу. Тут были проблемы с кодировкой отправляемых сообщений, то есть если просто отправлять, то сообщения пользователю приходили иероглифами, но это проблема решаема. Дальше также хочу заметить, что в документации ВК по данному методу, также версия 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('http://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, которая мне и помогла избежать данной проблемы. С английскими символами проблем не наблюдалось. Ну что вроде бы все рассказал по данному методу, дальше рассмотрим как удалять сообщения.
Добавлено: 15 Августа 2013 06:02:11 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...