嘗試Python的XML-RPC遠程調用

來源:互聯網
上載者:User
 何為XML-RPC?
XML-RPC 是 XML Web 服務的鼻祖。它是一個用於遠端程序呼叫(remote procedure call,RPC)的簡單規範,這種調用使用 HTTP 作為傳輸協議,並使用 XML 詞彙表作為訊息承載。由於 XML-RPC 非常簡單(整個規範列印出來還不到十頁紙),它已經變得非常流行,現在大多數語言都有了標準的或已經可用的 XML-RPC 實現。這些語言中包括 Python,它在版本 2.2 中就開始捆綁 xmlrpclib(Fredrik Lundh 開發的 XML-RPC 實現)了。

首先,我們打算將CMS(Context Manager System)系統進行Python的改造,第一件事,先向外公開版本的變化,可供遠程調用。

import SimpleXMLRPCServer

#定義自己的CMS類
class MyCMS:
    def getVersion(self):#向外公開版本的方法
        return "Powerd By Python 0.1a"

cms = MyCMS()
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888))
server.register_instance(cms)

print "Listening on port 8888"
server.serve_forever()#伺服器執行,並監聽8888連接埠

執行後:
此主題相關圖片

用戶端調用代碼,獲得最新的版本資訊

import xmlrpclib

server = xmlrpclib.ServerProxy("http://localhost:8888"

version = server.getVersion()

print "version:"+version

執行後:
此主題相關圖片

總結:
比同等的JAVA實現代碼量明顯減少,使精力能夠更多的集中到系統本身中來
JAVA的一個XmlRpc實現:http://ws.apache.org/xmlrpc/
JAVA調用代碼如下:

        XmlRpcClient xmlrpc = null;
        try
        {
            xmlrpc = new XmlRpcClient("http://localhost:8888/";);
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        Vector params = new Vector();
        try
        {
            String result = (String) xmlrpc.execute("getVersion", params);
            System.out.println(result);
        }
        catch (XmlRpcException e1)
        {
            e1.printStackTrace();
        }
        catch (IOException e1)
        {
            e1.printStackTrace();
        }

執行效果
此主題相關圖片

想瞭解更多,請到這裡:
http://www.python.org/doc/current/lib/module-xmlrpclib.html
http://www.python.org/doc/current/lib/module-SimpleXMLRPCServer.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.