標籤:and 協議 https 調試 優秀 ams request php method
JSON-RPC輕量級遠程調用協議介紹及使用
檔案夾
技術簡單介紹 1
一、JSON-RPC協議描寫敘述 1
二、JSON-RPC調用簡單示範範例 1
2.1、server端Java調用示範範例 1
2.2、Javaclient調用示範範例 2
2.3、PHPclient調用示範範例 2
2.3、JavaScriptclient調用示範範例 2
2.4、直接GET請求進行調用 2
三、JSON-RPC總結 3
參考文檔 3
技術簡單介紹
json-rpc是基於json的跨語言遠程調用協議。比xml-rpc、webservice等基於文本的協議資料轉送格小;相對hessian、java-rpc等二進位協議便於調試、實現、擴充,是很優秀的一種遠程調用協議。眼下主流語言都已有json-rpc的實現架構,java語言中較好的json-rpc實現架構有jsonrpc4j、jpoxy、json-rpc。三者之中jsonrpc4j既可獨立使用。又可與spring無縫集合,比較適合於基於spring的項目開發。
一、JSON-RPC協議描寫敘述
json-rpc協議很easy,發起遠程調用時向服務端資料轉送格式例如以下:
{"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示範範例:
publicclass HelloWorldServletextends HttpServlet {
privatestatic final longserialVersionUID = 3638336826344504848L;
private JsonRpcServerrpcService = null;
@Override
publicvoid init(ServletConfig config)throws ServletException {
super.init(config);
rpcService =new JsonRpcServer(new HelloWorldService(), HelloWorldService.class);
}
@Override
protectedvoid 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、PHPclient調用示範範例
基於json-rpc-php的PHPclient調用示範範例:
<?phpinclude(dirname(__FILE__)."/lib/client/JsonRpcClient.php");
$client=newJsonRpcClient("http://10.13.49.234:8080/index.json");
$response=$client->getSystemProperties();
echo$response->result;
?>
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例如以下:
method=getSystemProperties&id=3325235235235¶ms=JTViJTVk">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等語言實現,是很不錯的及輕量級的遠程調用協議。
參考文檔
http://code.google.com/p/jsonrpc4j/
http://json-rpc.org/wiki/implementations
http://en.wikipedia.org/wiki/JSON-RPC
https://github.com/gimmi/jsonrpcjs
http://bitbucket.org/jbg/php-json-rpc
https://github.com/Pozo/json-rpc-php
https://github.com/subutux/json-rpc2php
JSON-RPC輕量級遠程調用協議介紹及使用