Еще немного ищем в интернете примеры использования, и в итоге получаем, что нам нужно выполнить такой запрос: https://api.vk.com/method/friends.get?user_id=ID, где ID - это идентификатор пользователя, который можно посмотреть в подсказке к ссылке на каждой странице. Берем первый попавшийся идентификатор, например 29744451, и открываем ссылку https://api.vk.com/method/friends.get?user_id=29744451 в браузере.
Работает! Мы получили страницу, которая выглядит примерно так:
Данный ответ сервера представляет собой список идентификаторов друзей пользователей в формате Json. Это текстовый формат, для чтения которого есть специальные библиотеки. Но сначала нужно загрузить сами данные.
Шаг-2. Получение данных с сервера.
Для получения данных в Arduino есть специальный класс HTTPClient.
Код для загрузки данных выглядит так:
const char *url = "https://api.vk.com/method/friends.get?user_id=29744451";
HTTPClient http;
http.begin(url);
int http_code = http.GET();
if (http_code > 0) {
String json = http.getString();
...
}
Можно вывести данные в serial port и убедиться, что возвращается правильный список друзей. Он должен выглядеть также, как и в браузере по ссылке выше.
Шаг-3. Обработка данных
Нам не нужен весь список целиком, достаточно лишь узнать количество друзей. Для этого используем библиотеку обработки (парсинга) Json, скачать которую можно по ссылке https://github.com/bblanchon/ArduinoJson. Как обычно, файлы необходимо скачать и распаковать в папку Документы\Arduino \libraries.
Чтение данных из массива и получение его количества с помощью этой библиотеки выглядит так.
DynamicJsonBuffer jsonBuffer(16*1024);
JsonObject& parsed = jsonBuffer.parseObject(json);
if (parsed.success()) {
JsonArray& response = parsed["response"];
int count = response.size();
Serial.print("Number of friends: ");
Serial.println(count);
} else {
Serial.println("Parsing error");
}
Как можно видеть, мы получаем объект типа JsonArray, у которого узнаем размер вызовом метода size(). Также мы создаем объект DynamicJsonBuffer для хранения распакованных данных, при этом выделяется 16Кб памяти для временного буфера в памяти.