环境:mac os & android studio

一、启动私有链

搭建方法见 here

启动并设定RPC端口:

geth --identity "linoy" --rpc --rpccorsdomain "*" --datadir "./" --port "30303" --nodiscover --rpcapi "personal,db,eth,net,web3,miner" --networkid 1999 console 2>>geth.log
  • 1
  • 2

需要注意的是rpcapi 参数:

这个命令指示了允许通过RPC访问的命令。默认情况下,Geth允许web3。当你准备使用不同的api接口时,在启动节点时要添加上不同的参数,比如你要使用rpc调用创建账户(personal操作),那么在启动的命令中就需要核实是否有–rpcapi参数,参数值中是否有personal选项,否则无法正常调用
  • 1
  • 2
  • 3
  • 4

二、Android studio新建项目并添加.jar包

下载地址:here

新建项目

选择project

导入jar包

将你要导入的jar包拖入libs文件夹内,然后

三、设置布局文件

<Buttonandroid:id="@+id/showView"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="getBlock"/><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/textview"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

四、设置权限

<uses-permission  android:name="android.permission.INTERNET"/>
  • 1

五、主代码

package com.example.pro.blockchain1;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;import org.alexd.jsonrpc.JSONRPCException;
import org.alexd.jsonrpc.JSONRPCHttpClient;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Button showButton;private TextView textview;public static final int SHOW = 0;private Handler handler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case SHOW:String a = (String) msg.obj;textview.setText(a);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textview=(TextView)findViewById(R.id.textview);showButton = (Button) findViewById(R.id.showView);showButton.setOnClickListener(this);}@Overridepublic void onClick(View v) {if(v.getId() == R.id.showView) {show();}}private void show() {new Thread(new Runnable() {@Overridepublic void run() {try {String url = "http://10.0.2.2:8545";   //注意,不是127.0.0.1JSONRPCHttpClient client = new JSONRPCHttpClient(url);Map<String, Object> map = new HashMap();List paramsList = new ArrayList();map.put("json-rpc", "2.0");map.put("method", "web3_clientVersion");map.put("params", paramsList);map.put("id", "67");String st = client.callString("web3_clientVersion", map);Message msg = new Message();msg.what =SHOW;msg.obj = st;handler.sendMessage(msg);} catch (JSONRPCException e) {//    textview.setText("step wrong??");e.printStackTrace();}}}).start();}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80

可以看到结果:

其他事例

String url = "http://10.0.2.2:8545";
JSONRPCHttpClient client = new JSONRPCHttpClient(url);
Map<String, Object> map = new HashMap();
List paramsList = new ArrayList();
map.put("id", "1");
map.put("json-rpc", "2.0");
map.put("params", paramsList);//personal_listAccounts
String st = client.callString("personal_listAccounts", map);//personal_newAccount
paramsList.add("123456");
String st = client.callString("personal_newAccount", map);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

参考文档:here & here

API文档:here & here

版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/loy_184548/article/details/78515600

Android通过Geth RPC接口实现接入以太坊私有链相关推荐

  1. 以太坊 私有链搭建 Geth+Mist钱包

    近期在区块链的热潮推动下,我开始研究区块链技术,尤其是智能合约.可编程式的智能合约龙头老大非以太坊莫属了,其他的合约平台如 hyperledger,EOS 相对来说没以太坊成熟,以后陆续在研究.好了, ...

  2. 区块链开发之搭建以太坊私有链

    (一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...

  3. 区块链,使用 Go-Ethereum 搭建以太坊私有链

    1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太 ...

  4. 在Ubuntu下成功搭建以太坊私有链挖矿并转账

    前言 最近老师布置了一个任务,让我学习区块链的知识.刚开始乖乖的拿一本书看概念,有时候看书真的很无聊,我都睡过去好几回了.前几天老师说,你要是感觉看概念太无聊,就先尝试着搭一个以太坊私有链试一试.哇, ...

  5. 使用Helm在k8s集群上部署以太坊私有链

    一.概述 二.部署流程 三.问题记录 四.部署检查 五.参考 一.概述 使用k8s官方的包管理工具helm部署以太坊私有链并启动三类节点和一个前端服务: bootnode: used for Geth ...

  6. 搭建以太坊私有链(PoA)--CentOS7.6 on 阿里云ECS、macOS Catalina on Mac、Ubuntu20.04 on Raspberry Pi 4B

    使用Geth搭建以太坊PoA私有链 搭建以太坊私有链(PoA) 1 阿里云ECS上的操作步骤 1.1 准备环境 1.2 安装Geth及Tools 1.3 创建以太坊私有链的数据文件夹 1.4 用pup ...

  7. 以太坊私有链与Ethereum Wallet启动问题

    在私有链的情况下,要开启Ethereum Wallet,首先要开启本地的私有链geth,否则会出现如下问题: 解决方案: 开启以太坊私有链: ./private_blockchain.sh priva ...

  8. 如何搭建以太坊私有链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如知道什么是以 ...

  9. 【手把手】如何在10分钟内搭建一个以太坊私有链?

    在开发以太坊时,很多时候需要搭建一条以太坊私有链,这篇来自作者熊丽兵的文章,手把手教你10分钟内如何在Mac上进行搭建. 作者 | 熊丽兵 整理 | 科科 阅读本文前,你应该对以太坊语言有所了解,如果 ...

最新文章

  1. Tensorflow:在Tensorflow的不同版本中如何实现Xavier参数权重初始化
  2. 【深度学习】用 YOLO v5+DeepSORT,打造实时多目标跟踪模型
  3. 《计算机组成原理》课程设计任务书——TEC-2实验系统——微程序设计
  4. debug LUW1 - do binding workflow
  5. Codeforces 773D Perishable Roads 最短路 (看题解)
  6. 【JEECG技术文档】Redis与Eache切换文档
  7. 如何在Windows上安装Angular:Angular CLI,Node.js和构建工具指南
  8. php的qq接口文档,分账接口
  9. Markdown代码框diff,高亮显示差异、增量、修改
  10. [bzoj 2017] [Usaco2009 Nov]硬币游戏
  11. 管理口SSH服务存在拒绝服务漏洞(CVE-2016-6515)
  12. 优化理论18----Fritz John条件
  13. 01.redis初识
  14. linux怎么启动程序路径,linux查找启动程序的路径
  15. lch 儿童围棋课堂 初级篇2 (李昌镐 著)
  16. Eclipse中文汉化包安装教程
  17. 计蒜客 17119 Trig Function(切比雪夫多项式)
  18. UCI下载葡萄酒数据
  19. CSS基础--美化视觉效果
  20. 笔记本电脑dns电脑服务器未响应如何处理,提示dns电脑服务器未响应如何处理?...

热门文章

  1. SharePoint 部署解决方案Feature ID冲突
  2. ubuntu12.10安装openssh-server与本身的软件冲突
  3. C语言中的位域 bit field [转]
  4. 去掉一键还原 开机按k键
  5. 工预-Typora(A)
  6. Python学习笔记:接下来
  7. Python学习笔记: Python 标准库概览二
  8. 【Android笔记】MediaPlayer基本使用方式
  9. Coursera吴恩达《神经网络与深度学习》课程笔记(3)-- 神经网络基础之Python与向量化
  10. 模拟图书管理系统的完整代码