Сегодня, мы будем разбираться как работать с блокчейном Голоса на Android. Сегодня мы будем получать номер блока.
Заготовку для нашего сегодняшнего проекта можно взять здесь. В первую очередь нужно сменить url в request на wss://api.golos.cf. Далее я переименовал класс WebSocketClass на WebSocketGolos, но это на ваше усмотрение.
Хочу отметить, что принцип работы останется, описанный в этой статье.
Идём в наш класс WebSocket и очищаем метод onOpen. И вставляем следующее содержимое.
try {
JSONObject jsonObject = new JSONObject("{id:1, method:'call', 'params': ['database_api', 'set_block_applied_callback', [0] ]}");
webSocket.send(jsonObject.toString());
} catch (JSONException e) {
e.printStackTrace();
}
Тут всё просто. Создаём JSON объект и передаём его блокчейну. Заметим, что в блокчейн через WebSocket отправляем строку!
Далее будем работать с методом onMessage, который тоже очистим и вставим следующее содержимое:
try{
JSONObject data = new JSONObject(text);
String method = data.getString("method");
Log.d("WS", method.toString());
JSONArray params = data.getJSONArray("params");
JSONArray objectParam = params.getJSONArray(1);
JSONObject arrayObjectParam = objectParam.getJSONObject(0);
String previousParam = arrayObjectParam.getString("previous");
Integer hex = Integer.parseInt(previousParam.substring(0, 8), 16);
Log.d("WS", hex.toString());
if(Objects.equals(method, "notice")){
Log.d("WS", data.toString());
System.out.print(data);
}
}catch (JSONException e){
e.toString();
}
Также создаём JSON объект из ответа блокчейна.
JSONObject data = new JSONObject(text);
В нём ищем значение ключа "method".
String method = data.getString("method");
Далее Получаем объект "params", в котором и хранится наш номер блока.
JSONArray params = data.getJSONArray("params");
"params" хранит в себе обычный массив. Нам нужен второй элемент массива.
JSONArray objectParam = params.getJSONArray(1);
В свою очередь он хранит JSON объект.
JSONObject arrayObjectParam = objectParam.getJSONObject(0);
Получаем его по ключу "previous".
String previousParam = arrayObjectParam.getString("previous");
Как было написано в прошлой статье, про блокчейн, номер блока хранится в "previous", в первых 8 символах и перевести в 16-тиричную систему счисления. Так и сделаем:
Integer hex = Integer.parseInt(previousParam.substring(0, 8), 16);
Что же мы сделали? Приложение подключилось к блокчейну и "слушает его блоки". Номера блоков мы знаем.
На этом первая часть цикла статей про блокчейн и android подошла к концу. В следующей статье будем получать содержимое блоков, парсить их и смотреть что-же там внутри.
Полный листинг
Материал подготовлен автором @zheev
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
alex2016, gildar, max-max, svetlanaaa, phoenix, galina1, tristamoff, vadbars, olga-olga, semasping, arystarch, vika-teplo, amelina.elena, del137, kertar, ifingramota, oksi-m, zhenek, magformers, kr-alexey
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас: