{ \"大众method\"大众: \"大众sayHello\"大众, \"大众params\"大众: [\"大众Hello JSON-RPC\"大众], \"大众id\公众: 1}
參数解释:
method: 调用的方法名
params: 方法传入的參数。若无參数则传入 []
id : 调用标识符。用于标示一次远程调用过程
server其收到调用要求,处理方法调用,将方法效用结果效应给调用方;返回数据格式:
{ \"大众result\"大众: \"大众Hello JSON-RPC\"大众, \"大众error\公众: null, \公众id\"大众: 1 }
參数解释:
result: 方法返回值。若无返回值。则返回null。
若调用缺点,返回null。
error :调用时缺点,无缺点返回null。
id : 调用标识符,与调用方传入的标识符同等。
以上便是json-rpc协议规范,很easy,小巧。便于各种措辞实现。
二、JSON-RPC大略演示样例2.1、server端Java调用演示样例
jsonrpc4jserver端java演示样例:
public class HelloWorldServlet extends HttpServlet { private static final long serialVersionUID = 3638336826344504848L; private JsonRpcServer rpcService = null; @Override public void init(ServletConfig config) throws ServletException { super.init(config); rpcService = new JsonRpcServer(new HelloWorldService(), HelloWorldService.class); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { rpcService.handle(req, resp); }}
2.2、Javaclient调用演示样例
jsonrpc4j的Javaclient调用演示样例:
JsonRpcHttpClient client = new JsonRpcHttpClient( new URL(\公众http://127.0.0.1:8080/index.json\"大众)); Map<String,String> headers = new HashMap<String,String>(); headers.put(\"大众name\"大众, \"大众剑白\"大众); client.setHeaders(headers); String properties = client.invoke(\"大众getSystemProperties\"大众, null, String.class); System.out.println(properties);
2.3、JavaScriptclient调用演示样例
基于jsonrpcjs的JavaScriptclient调用演示样例:
var rpc = new jsonrpc.JsonRpc('http://127.0.0.1:8080/index.json');rpc.call('getSystemProperties', function(result){alert(result);});
2.4、直接GET要求进行调用
无需不论什么client。仅仅需手工拼接參数进行远程调用,要求URL例如以下:
http://127.0.0.1:8080/index.json?method=getSystemProperties&id=3325235235235¶ms=JTViJTVk
參数解释:
method : 方法名
params :调用參数。json的数组格式[], 将參数需前辈行url编码,再进行base64编码
id : 调用标识符,随意值。
三、JSON-RPC总结json-rpc是一种很轻量级的跨措辞远程调用协议。实现及利用大略。
仅需几十行代码,就可以实现一个远程调用的client。方便措辞扩展client的实现。
server端有php、java、python、ruby、.net等措辞实现,是很不错的及轻量级的远程调用协议。