json-rpc是基于json的跨语言远程调用协议。比xml-rpc、webservice等基于文本的协议数据传输格小;相对hessian、java-rpc等二进制协议便于调试、实现、扩展,是很优秀的一种远程调用协议。眼下主流语言都已有json-rpc的实现框架,java语言中较好的json-rpc实现框架有jsonrpc4j、jpoxy、json-rpc。三者之中jsonrpc4j既可独立使用。又可与spring无缝集合,比较适合于基于spring的项目开发。
json-rpc协议很easy,发起远程调用时向服务端数据传输格式例如以下:
{ "method": "sayHello", "params": ["Hello JSON-RPC"], "id": 1}
参数说明:
method: 调用的方法名
params: 方法传入的参数。若无参数则传入 []
id : 调用标识符。用于标示一次远程调用过程
server其收到调用请求,处理方法调用,将方法效用结果效应给调用方;返回数据格式:
参数说明:
result: 方法返回值。若无返回值。则返回null。
若调用错误,返回null。
error :调用时错误,无错误返回null。
id : 调用标识符,与调用方传入的标识符一致。
以上就是json-rpc协议规范,很easy,小巧。便于各种语言实现。
2.1、server端Java调用演示样例
jsonrpc4jserver端java演示样例:
2.2、Javaclient调用演示样例
jsonrpc4j的Javaclient调用演示样例:
2.3、JavaScriptclient调用演示样例
基于jsonrpcjs的JavaScriptclient调用演示样例:
2.4、直接GET请求进行调用
无需不论什么client。仅仅需手工拼接参数进行远程调用,请求URL例如以下:
参数说明:
method : 方法名
params :调用参数。json的数组格式[], 将参数需先进行url编码,再进行base64编码
id : 调用标识符,随意值。
json-rpc是一种很轻量级的跨语言远程调用协议。实现及使用简单。
仅需几十行代码,就可以实现一个远程调用的client。方便语言扩展client的实现。
server端有php、java、python、ruby、.net等语言实现,是很不错的及轻量级的远程调用协议。
如果要查询主网上的交易记录,可以使用etherscan。但是,如果是你自己搭建的私链,应该如何查询交易记录呢?
答案是你需要自己监听链上的日志,存到数据库里,然后在这个数据库中查询。例如:
var addr = "0xbfb2e296d9cf3e593e79981235aed29ab9984c0f"var filter = web3.eth.filter({fromBlock:0, toBlock:'latest', address: addr})
filter.get(function (err, transactions) {
transactions.forEach(function (tx) {
var txInfo = web3.eth.getTransaction(tx.transactionHash)
//这时可以将交易信息txInfo存入数据库
})
})
web3.eth.filter()用来监听链上的日志,web3.eth.getTransaction()用来提取指定交易的信息,一旦获得交易信息,就可以存入数据库供查询用了。
推荐一个实战入门,你可以看看:以太坊教程