Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портрала Голос!
До этого момента я не упоминал, что давно питаю тягу к программированию :) Было время когда я интересовался PHP. Потом, когда у меня появился аквариум (об этом как-нибудь позже) я занялся программированием Arduino (об этом также могу рассказать позже, если вам будет интересно). В данный момент я учусь программировать на Java. Вы не могли не заметить по моим постам, что я состою сообществе PostCoin и мне ка держателю этой монеты интересно узнать баланс своего кошелька, а также сколько монет я заработал на POS за сутки, неделю.... и так далее. Поэтому я решил написать приложение для проверки баланса и подсчета награды за POS. Приложение пока не дописано, я так сказать пути :) Пишу на Java, вывод всех данных пока идет в консоль. Хотелось бы с вами поделиться своими трудами, может среди моих подписчиков окажется более сведущий чем я человек, который укажет на мои ошибки и недочеты. Также целью этих постов (а их будет несколько) является посильная помощь таким же как я новичкам в решении некоторых вопросов, таких решение которых для гуру является само собой разумеещимся, но непонятным для нас. Ниже я приведу исходники приложения с пояснениями. Итак приступим :)
Для начала опишу принцип работы приложения:
- Делаем HTTP запрос к обозревателю блоков
- Разбираем полученный от него JSON
- Выводим в консоль полученную информацию.
Для запроса используем библиотеку HTTP ходящую в Java. Я не знал какие именно классы мне понадобятся, поэтому импортировал весь пакет java.net.*, также я подключил пакеты java.io.* и java.lang.*
import java.io.*;
import java.lang.*;
import java.net.*;
Http запрос я вынес в отдельный класс httpQuery.
Приведу текст целиком
/**
* Created by Kovatelj on 21.06.17.
*/
import java.io.*;
import java.lang.*;
import java.net.*;
public class httpQuery {
static private String resultQuery;
public String getResultQuery() {
return resultQuery;
}
public void httpQueryWallet(String wallet) {
URL url;
HttpURLConnection connection;
BufferedReader str;
String inputLine;
try {
url = new URL("http://bitexplorer.top/apis/addrbalance.php?addr=" + wallet);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
str = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
while ((inputLine = str.readLine()) != null) {
response.append(inputLine);
}
resultQuery = response.toString();
str.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Метод httpQueryWallet(String wallet) обрабатывает http запрос к блокэксплореру и записывает ответ в переменную resultQuery. Для запроса я воспользовался примером с официального сайта Oracle.
Но если использовать его "как есть" то мы получим от сервера ошибку 403. Я долго мучался и перечитал кучу статей, пока не понял что запросе нужно передавать заголовок User-Agent, за это отвечает
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
После этого я наконец получил свой долгожданный JSON :)
На этом пожалуй прервемся, продолжение будет в следующий раз :)
Надеюсь вам понравилось и вы подпишитесь, чтобы не пропустить продолжение :)
@kovatelj, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующей категории:
не плохо @kovatelj =)
Могу помочь в начинаниях. Научить работать с сборщиком проектов, сторонними библиотеками. Преобразовывать ответы в java объекты и много другое. В настоящий момент пишу библиотеку для голоса.
Спасибо. Мельком глянул ваш пост про библиотеку, возможно воспользуюсь ей при случае. Внешней библиотекой пользуюсь в своём проекте для парсил json, так что уже в курсе как это делается. Постараюсь сегодня выложить продолжение своих мытарств.
я сегодня планирую сделать подпись блока (ну или хотя бы начать писать этот метод)
хочу сначала довести до ума свое приложение. пока все буду отлаживать в консольном варианте, потом скорректирую для работы на андроид. изначально оно и задумывалось для работы на телефоне.
@kovatelj Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество опубликованных постов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
@kovatelj Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
losos, kibela, ekaterinka, dimarss, kot, vik, vadbars, dany2323, guepetto, vict0r, arystarch, olgabobkovafoto, bobrik, vika-teplo, nims55, aiparnyuk, myhardmoney, bag, sergiusduke, tishkaka
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"