Для всех, кто попадается на это, надеюсь, я могу помочь вам
Я прототипу все мои Dev в NetBeans, и привести его к затмить, где я делаю свое развитие развертывания (надеюсь, эти термины имеют смысл лол)
В любом случае, мне нужен чистый раствор Java (без Maven ерунды). Это используя баночка от апача для HTTP комм:
http://hc.apache.org/downloads.cgiЗагрузить бинарный файл по своему выбору в соответствии с 4.4 раздела HttpClient (ГА).
Вам также понадобится JSon-простой баночка от Google: (dwnld ссылки в разделе «Начало работы»)
https://code.google.com/p/json-simple/Вам нужно будет указать на эти баночки файлы в конфигурации сборки для проекта Java. В NetBeans, щелкните правой кнопкой мыши проект в проводнике проекта, наведите курсор мыши на Configuration Set и нажмите на кнопку Настройка. Затем в этом меню, которое появляется, нажмите Libraries в левой панели и выберите "Добавить JAR / папку", В затмении, щелкните правой кнопкой мыши проект, наведите курсор мыши на путь сборки и нажмите на кнопку Настройка Built Path. Затем в контекстном меню выбрать Добавить Баночки" или "Добавить внешние Баночки" в зависимости от того, где загруженного каталога с Apache (я всегда буду копировать банки в мой фактический проект так зависимости осуществляется от экземпляра к экземпляру, если безопасность не плотна по какой-либо причине)
Если у вас есть эти банки в путь сборки, копировать / вставить эти два файла в вашем проекте:
Примечание: Это для окон машины, для Linux, измените строку:
DIR = System.getProperty ("user.home") + "\\ AppData \\ Roaming \\ Bitcoin";Для того, чтобы:
DIR = System.getProperty ("user.home") + "\\. Bitcoin";общественный класс CryptoConfig {
частная строка URL;
частная строка rpcPort;
частная строка rpcUser;
частное rpcPass строк;
общественного CryptoConfig (String Урлин, String rpcPortIN, String rpcUserIN, String rpcPassIN) {
this.url = Урлин;
this.rpcPort = rpcPortIN;
this.rpcUser = rpcUserIN;
this.rpcPass = rpcPassIN;
}
общественный CryptoConfig () {
}
Строка getRpcPass общественности () {
вернуться rpcPass;
}
общественный недействительный setRpcPass (String rpcPass) {
this.rpcPass = rpcPass;
}
Строка getRpcPort общественности () {
вернуться rpcPort;
}
общественного недействительными setRpcPort (String rpcPort) {
this.rpcPort = rpcPort;
}
Строка getRpcUser общественности () {
вернуться rpcUser;
}
общественного недействительными setRpcUser (String rpcUser) {
this.rpcUser = rpcUser;
}
Строка GetURL общественности () {
возвратного URL;
}
общественного недействительными setUrl (String URL) {
this.url = URL;
}
}
импорт java.io. *;
импорт java.util.ArrayList;
импорт java.util.logging.Level;
импорт java.util.logging.Logger;
импорт org.apache.http.HttpResponse;
импорт org.apache.http.client.methods.HttpPost;
импорт org.apache.http.entity.StringEntity;
импорт org.apache.http.impl.client.CloseableHttpClient;
импорт org.apache.http.impl.client.HttpClients;
импорт org.json.simple.JSONArray;
импорт org.json.simple.JSONObject;
общественный класс CommWithWallet {
частное ИНТ BITCOIN_PORT_NUMBER = 9368;
государственной статической силы основных (String [] арг) {
CommWithWallet, что = новый CommWithWallet ();
}
общественный CommWithWallet () {
System.out.println (CryptoInvoke ("BTC", "getbalance"));
}
Строка общественного CryptoInvoke (String валюты, String a_sMethod, Object ... a_params) {
Строка returnString = "";
CryptoConfig configDetails = ReadConfig (валюта);
// System.out.println (configDetails.getUrl ());
// System.out.println (configDetails.getRpcPort ());
// System.out.println (configDetails.getRpcUser ());
// System.out.println (configDetails.getRpcPass ());
// System.out.println (a_sMethod);
// System.out.println (валюта);
пытаться {
Строка urlString = configDetails.getUrl () + ":" + ConfigDetails.getRpcPort ();
Строка подписи = "";
Строка Парольпользователя = configDetails.getRpcUser () + ":" + ConfigDetails.getRpcPass ();
кодирование String = новый sun.misc.BASE64Encoder () закодировать (userPassword.getBytes ()).
JSONObject paramsJson = новый JSONObject ();
paramsJson.put ("jsonrpc", "1,0");
paramsJson.put ("Я бы", "1");
paramsJson.put ("метод", A_sMethod);
если (a_params! = NULL) {
если (a_params.length > 0) {
JSONArray ParamArray = новый JSONArray ();
(БАЗ для объекта: a_params) {
paramArray.add (БАЗ);
}
paramsJson.put ("Титулы", ParamArray);
}
}
CloseableHttpClient Cliente = HttpClients.createDefault ();
HttpPost HttpPost = новый HttpPost (urlString);
Строка Comando = paramsJson.toJSONString ();
StringEntity entidad = новый StringEntity (Comando);
httpPost.setEntity (entidad);
httpPost.setHeader ("авторизация", "основной " + Кодирование);
HttpResponse respuesta = cliente.execute (HttpPost);
BufferedReader й = новый BufferedReader (новый InputStreamReader (respuesta.getEntity () getContent ()).);
Строка inputLine = "";
returnString = "";
в то время как ((inputLine = rd.readLine ())! = NULL) {
returnString + = inputLine;
}
} Задвижка (NumberFormatException п) {
// btcAmountString не число
ne.printStackTrace ();
} Поймать (IOException п) {
// btcAmountString не число
ne.printStackTrace ();
}
вернуться returnString;
}
общественного CryptoConfig ReadConfig (String валюта) {
INT номер_порта = 0;
Строка реж = "";
Строка fileLocation = "";
CryptoConfig конфигурации = новый CryptoConfig ();
если (System.getProperty ("user.home").содержит("C:")) {
если (currency.equals ("BTC")) {
DIR = System.getProperty ("user.home") + "\\ AppData \\ Roaming \\ Bitcoin";
номер_порт = BITCOIN_PORT_NUMBER;
fileLocation = каталог + "\\ bitcoin.conf";
} Еще если (currency.equals ("")) {
}
ArrayList<строка> FILEINFO = новый ArrayList<строка>();
пытаться {
BufferedReader в = новый BufferedReader (новый FileReader (fileLocation));
Строка inputLine = "";
в то время как ((inputLine = in.readLine ())! = NULL) {
fileInfo.add (inputLine);
}
} Задвижка (FileNotFoundException ех) {
. Logger.getLogger (CommWithWallet.class.getName ()) журнал (Level.SEVERE, нуль, ех);
ex.printStackTrace ();
System.out.println (fileLocation);
} Поймать (IOException ех) {
. Logger.getLogger (CommWithWallet.class.getName ()) журнал (Level.SEVERE, нуль, ех);
ex.printStackTrace ();
System.out.println (fileLocation);
}
для (String configLine: FILEINFO) {
Строка configKey = "";
Строка configValue = "";
INT индекс = configLine.indexOf ( '=');
если (индекс > 0) {
configKey = configLine.substring (0, индекс);
configValue = configLine.substring (configLine.lastIndexOf ( '=') + 1);
если (configKey.equals ("walleturl")) {
config.setUrl (configValue);
} Еще если (configKey.equals ("rpcport")) {
config.setRpcPort (configValue);
} Еще если (configKey.equals ("rpcuser")) {
config.setRpcUser (configValue);
} Еще если (configKey.equals ("rpcpassword")) {
config.setRpcPass (configValue);
}
}
}
} Еще {
// линукс
}
вернуть конфигурации;
}
}
Теперь, я слышал от других, что это приведет к проблемам, когда вы начинаете делать сложные вещи, связанные с того, что я хотел бы рассмотреть передовые функциональные возможности QT (нечто большее, чем создание адресов, проверка остатков адресов, отправка монет и проверки операций).
Для запуска этого есть главный метод в CommWithWallet, который создает экземпляр самого по себе, и в конструкторе вы увидите строку System.out.println ().