Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портрала Голос!
До этого момента я не упоминал, что давно питаю тягу к программированию :) Было время когда я интересовался 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 :)
На этом пожалуй прервемся, продолжение будет в следующий раз :)
Надеюсь вам понравилось и вы подпишитесь, чтобы не пропустить продолжение :)