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

in java •  7 years ago 

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

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

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

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!