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

Здравствуйте, вот все продолжаю мучать VK API в Delphi. На этой раз «перст пал» на расширенные методы API. К данным методам относятся

работа с личными сообщениями
работа со стеной пользователя
работа с фотографиями и альбомами фотографий

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

messages.get

Данный методу имеет следующие параметры

api_id — идентификатор приложения
sig — подпись безопасности
v — версия API(тут и возникли проблемы, расскажу ниже)
out — если равен 1, то вернет исходящие сообщения
offset — смещение, необходимое для выборки определенного подмножество сообщений
count — кол-во сообщений, которое необходимо получить (не больше 100)
filters — фильтр, получаем сообщений (1 — только не прочитанные, 2 — не из чата, 4 — сообщения от друзей)
preview_length — кол-во символов по которому необходимо обрезать сообщение
time_offset — максимальное время, прошедшее с момента отправки сообщений до текущего в секундах
format — XML или JSON
test_mode — если этот параметр равен 1, то разрешает тестовые запросы к данным приложения.Данный параметр позволяет тестировать приложение без загрузки его на сайт.

Первые 3 параметра являются обязательными как получить подпись безопасности я рассказывал, также хочу сказать, что для того, чтобы получать сообщения из вашего аккаунта необходимо, чтобы для данного приложения стояли права с битовой маской не менее 4096. Другими словами в настройках доступа данного приложения должна стоять галочка работы с Личными сообщениями. Вот что я хотел сказать про v (версию API). На сайте ВК по данному методу написано, что версия API для данного метода должна быть 2.0, я не понял почему, мне все время выдавало ошибку, что типа метод такой не существует, далее я поставил версию 3.0 все заработало, не понимаю почему ВК для таких расширенных методов не предоставила нормальную информацию.

Я создал новую вкладку на TPageControl в программе и поместил туда TListBox - 2 шт и TButton. В первом TListBox будет сообщение, а во втором идентификатор того, кто отправил и мы сможем посмотреть его профиль. На событие OnClick TButton я написал следующий код
procedure TForm1.Button11Click(Sender: TObject);
var
 PostVK:TStringList;
 sig:string;
 i:integer;
begin
   try
    i:=1;
    ListBox3.Clear;
    ListBox4.Clear;
    PostVK:=TStringList.Create;
    sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=messages.getv=3.0'+Pchar(LabelSecret.Caption);
    sig:=md5(sig);
    PostVK.Add('api_id=1918788');
    PostVK.Add('method=messages.get');
    PostVK.Add('format=XML');
    PostVK.Add('v=3.0');
    PostVK.Add('sig='+sig);
    PostVK.Add('sid='+Pchar(LabelSid.Caption));
    logVK:=IdHTTP1.Post('http://api.vkontakte.ru/api.php',PostVK);
    while (i<=length(logVK)) do
     begin
      if (pos('<body>',logVK)<>0) then
       begin
        ListBox3.Items.Add(Utf8ToAnsi(Pars(logVK,'<body','</body>',0)));
        ListBox4.Items.Add(Utf8ToAnsi(Pars(logVK,'<uid','</uid>',0)));
        Delete(logVK,1,pos('</uid>',logVK));
        i:=0;
       end;
      inc(i);
     end;
    PostVK.Free;
   except
    on e:Exception do
     PostVK.Free;
   end;
end;

Ну я чуток подредактировал наше приложение, там чуток может навел красоты, ну и надо уже брать за модуль, а также в следующий статьях рассмотрим как можно отправлять сообщения.
Добавлено: 15 Августа 2013 06:17:53 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...