**
******xmlrpcserver模組為xml-rpc服務端的寫入提供了乙個基本的框架。利用******xmlrpcserver伺服器既可以一直空閒,也可以利用cgixmlrpcrequesthandler來嵌入到乙個cgi環境中。
xml-rpc(remote procedure call)是通過http傳輸協議,利用xml格式的遠端程式呼叫方法。客戶端可以呼叫服務端帶引數的方法並獲取返回的結構資料。(服務端的名字是乙個uri)。這個模組支援寫入xml-rpc端的**。它用來處理所有轉換的細節在在整合的python物件和xml報文之間。
eg1服務端**:
from ******xmlrpcserver import ******xmlrpcserver
from ******xmlrpcserver import ******xmlrpcrequesthandler
class
requesthandler
(******xmlrpcrequesthandler):
rpc_paths = ('/rpc2')
server = ******xmlrpcserver(("localhost", 8000),requesthandler = requesthandler)
#server = ******xmlrpcserver(("localhost", 8000))
server.register_introspection_functions()
server.register_function(pow)
defadder_function
(x,y):
return x+y
server.register_function(adder_function,'add')
class
myfuncs:
defdiv
(self, x, y):
return x//y
server.register_instance(myfuncs())
server.serve_forever()
eg1客戶端**:
print s.system.listmethods()xml_rpc服務端建立步驟:
1、 匯入******xmlrpcserver模組
2、 例項化乙個xml-rpc服務物件,在指定的埠監聽請求
server = ******xmlrpcserver((「localhost」, 8000))
3、 對函式的定義並把該函式註冊到server端
server.register_function(adder_function,』add』)##adder_function是服務點定義的函式,add是客戶端呼叫時用的函式。
server.register_introspection_functions()##如果用到內部函式,需要把內部函式註冊到服務端。
server.register_instance(myfuncs())##如果要註冊的是乙個類,可以利用這個函式把類中的方法全部註冊到server端。
4、服務端開始監聽執行server.serve_forever()
xml_rpc客戶端建立步驟:
1、 匯入xmlrpclib庫模組
2、 建立乙個**到服務端
proxy = xmlrpclib.serverproxy(『http://localhost:8000『)##函式引數是url格式
3、通過**就可以呼叫服務端的方法。
eg2服務端**:
import datetime
from ******xmlrpcserver import ******xmlrpcserver
import xmlrpclib
deftoday
(): today = datetime.datetime.today()
return xmlrpclib.datetime(today)
defadd
(x,y):
return x+y
defsubtract
(x,y):
return x-y
defmultiply
(x,y):
return x*y
defdivide
(x,y):
return x/y
server = ******xmlrpcserver(("localhost", 8001))
print
"listening on port 8001..."
server.register_multicall_functions()
server.register_function(today, "today")
server.register_function(add, "add")
server.register_function(subtract, "subtract")
server.register_function(multiply, "multiply")
server.register_function(divide, "divide")
server.serve_forever()
注意:
server.register_multicall_functions()##這個函式的作用是可以使客戶端同時呼叫服務端的的多個函式。
eg2客戶端**:
"today1: %s, 7+3=%d, 7-3=%d, 7*3=%d, 7/3=%d" % tuple(result)注意:
multicall = xmlrpclib.multicall(proxy)
…… result = multicall()##將這兩個函式之間的返回值寫入到result中。
Python的招牌菜xmlrpc
一 簡介 為了解決在系統的80埠提供rpc的服務,而又不影響正在執行的web服務,人們想出了用http協議傳輸rpc包的辦法。對於幾乎是專門用於傳輸文字的http協議,要在其上傳輸rpc封包,最方便的方法莫過於把rpc封包編碼成文字形式 例如xml檔案。xml rpc 是由美國userland公司指...
Python的招牌菜xmlrpc
一 簡單介紹 為了解決在系統的80port提供rpc的服務。而又不影響正在執行的web服務。人們想出了用http協議傳輸rpc包的辦法。對於差點兒是專門用於傳輸文字的http協議。要在其上傳輸rpc封包。最方便的方法莫過於把rpc封包編碼成文字形式 比如xml檔案。xml rpc 是由美國userl...
php5中XML RPC函式的使用
這幾天在看了zend php5 code contest的比賽獲獎作品,看了幾個的關於web架構方面的獲獎作品,感受頗深,xml和php結合應用越來多了,裡面幾乎所有的作品在設計上都用到了xml這個東西.又落伍了不少.建議朋友們都去看看.所以自己這幾天在瘋狂的學習php和xml結合的相關知識.這其中...