Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
kovatelj
7 лет назад

Пишу приложение на Java.

Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портрала Голос!

До этого момента я не упоминал, что давно питаю тягу к программированию :) Было время когда я интересовался 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 :)

На этом пожалуй прервемся, продолжение будет в следующий раз :)

Надеюсь вам понравилось и вы подпишитесь, чтобы не пропустить продолжение :)

3
32.655 GOLOS
На Golos с October 2016
Комментарии (8)
Сортировать по:
Сначала старые