xml-rpc 簡(jiǎn)介:
xml-rpc 的全稱是 XML Remote Procedure Call印蔗,即XML遠(yuǎn)程方法調(diào)用。它是一套基于 Internet 過程調(diào)用而實(shí)現(xiàn)了平臺(tái)無關(guān)性與語言無關(guān)性的標(biāo)準(zhǔn)規(guī)范吧趣。不同語言有不同 xml-rpc 實(shí)現(xiàn),本篇主要介紹 python 的 xml-rpc 實(shí)現(xiàn)爪喘。
安裝 xml-rpc:
python sdk 原生支持了xml-rpc纠拔,所以只要安裝了python sdk 就可以使用xml-rpc了。
實(shí)踐:
下面我們使用 xml-rpc 定義一個(gè)接口侦鹏,該接口實(shí)現(xiàn)對(duì)傳入的數(shù)據(jù)進(jìn)行大寫的格式化處理略水。
- 創(chuàng)建 xmlrpc_demo python 工程:
- client 目錄下的 client.py 實(shí)現(xiàn)了客戶端用于發(fā)送數(shù)據(jù)并打印接收到 server 端處理后的數(shù)據(jù)
- server 目錄下的 server.py 實(shí)現(xiàn)了服務(wù)端用于接收客戶端發(fā)送的數(shù)據(jù)渊涝,并對(duì)數(shù)據(jù)進(jìn)行大寫處理后返回給客戶端
- 實(shí)現(xiàn) server 端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'xieyanke'
from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer
__HOST = 'localhost'
__PORT = '8008'
class RPCHandler(SimpleXMLRPCRequestHandler):
rpc_paths = (
'/', # 定義 RPC 接口的請(qǐng)求地址
)
with SimpleXMLRPCServer((__HOST, __PORT), requestHandler=RPCHandler) as rpcserver:
rpcserver.register_introspection_functions()
def formate_data(str):
return str.upper()
rpcserver.register_function(formate_data, 'formate_data') # 這里 'formate_data' 可以不與自定義的方法名字相同跨释,只要 server 端與 client 端做好約定即可
rpcserver.serve_forever()
- 實(shí)現(xiàn) client 端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'xieyanke'
import xmlrpc.client
__HOST = 'localhost'
__PORT = '8080'
server = xmlrpc.client.ServerProxy('http://' + __HOST + ':' + __PORT + '/') # 這里需要注意的是結(jié)尾的 ‘/' 必須存在厌处,如果不綁定根,xmlrpc client 默認(rèn)綁定的 url 為 host:port/RPC2
print(server.formate_data('hello,world!'))
- 執(zhí)行驗(yàn)證結(jié)果:
- 先啟動(dòng) server缆娃,之后再執(zhí)行 client
- client 側(cè)控制臺(tái)如果打印的結(jié)果為: HELLO,WORLD! 贯要,證明 xml-rpc 接口定義成功
- 交流可以加 QQ 群:397234385
- 或者 QQ 掃碼入群: