Всем привет, давненько я не писал именно по проекту VK API в Delphi, которые за последние 3 месяца потерпел серьезные изменения, это в первую очередь связано с тем, что каждый месяц, разработчики Вконтакте стараются вводить нововведения в данную социальную сеть. В связи с этим появились новые методы API, например, такие как, работа с подписчиками, работа с желаниями и так далее.
Но еще более радостной новостью стало то, что теперь независимый разработчик может осуществлять часть запросов к страницам пользователя без авторизации приложения и соответственно без авторизации пользователя, а пользователю также нет необходимости давать определенные права приложению.
Для некоторых, возможно это будет неудобно, так как, во-первых, не все методы таким образом доступны и на сколько я знаю, данный способ выводит результат в формате JSON.
Кроме всего этого, данные запросы осуществляются по защищенному протоколу, а кроме всего этого методом GET, но это нас не смущает, так как мы рассматривали, как работать с TIdHTTP по защищенному протоколу страниц, а если уже не заработает, то можно воспользоваться библиотекой Synapse, которая также неплохо справляется с работой с защищенными страницами.
Естественно не все запросы API будут работать без авторизации приложения, в основном это запросы, которые имеют небольшую битовую маску доступа к странице пользователя.
Итак, приступим, создадим проект в Delphi и на форму установим следующие компоненты:
- TIdHTTP
- TIdSSLIOHandlerSocketOpenSSL
- TButton
Кроме всего этого нам необходимы следующие библиотеки:
- libeay32.dll
- ssleay32.dll
Так как, данные запросы работают по зазщищенному протоколу, а Indy стандарнтыми средствами не справляется с SSL, то давайте вспомним статью Indy+SSL. Загрузка https-страниц. TIdHTTP+SSL.
Теперь нам остаются просто связать компонент TidHTTP с компонентом TIdSSLIOHandlerSocketOpenSSL в свойстве IOHandler и написать следующий код:
procedure TForm1.btn1Click(Sender: TObject);
var
html:WideString;
begin
html:=idhtp1.Get('https://api.vkontakte.ru/method/getProfiles?uids=1&fields=photo');
ShowMessage(html);
end;
Теперь остается только использовать JSON-библиотеку для парсинга данных или написать самому.
Исходник прикладывать не буду, так как весь исходник — это статья (то что находиться в статье)