JSON-RPC輕量級遠程調用協議介紹及使用

來源:互聯網
上載者:User

標籤: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&params=JTViJTVk">http://127.0.0.1:8080/index.json?method=getSystemProperties&id=3325235235235&params=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輕量級遠程調用協議介紹及使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.