日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Python中关于XML-RPC原理

發布時間:2024/9/5 asp.net 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中关于XML-RPC原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  SimpleXMLRPCServer模塊為XML-RPC服務端的寫入提供了一個基本的框架。利用SimpleXMLRPCServer服務器既可以一直空閑,也可以利用CGIXMLRPCRequestHandler來嵌入到一個CGI環境中。
  XML-RPC(Remote Procedure Call)是通過HTTP傳輸協議,利用XML格式的遠端程序調用方法。客戶端可以調用服務端帶參數的方法并獲取返回的結構數據。(服務端的名字是一個URI)。這個模塊支持寫入XML-RPC端的代碼。它用來處理所有轉換的細節在在整合的Python對象和XML報文之間。

Eg1服務端代碼:

1 from SimpleXMLRPCServer import SimpleXMLRPCServer 2 from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler 3 4 class RequestHandler(SimpleXMLRPCRequestHandler): 5 rpc_paths = ('/RPC2') 6 7 server = SimpleXMLRPCServer(("localhost", 8000),requestHandler = RequestHandler) 8 #server = SimpleXMLRPCServer(("localhost", 8000)) 9 server.register_introspection_functions() 10 11 server.register_function(pow) 12 13 def adder_function(x,y): 14 return x+y 15 server.register_function(adder_function,'add') 16 17 class MyFuncs: 18 def div(self, x, y): 19 return x//y 20 server.register_instance(MyFuncs()) 21 server.serve_forever()

Eg1客戶端代碼:

1 import xmlrpclib 2 3 s = xmlrpclib.ServerProxy('http://localhost:8000') 4 print s.pow(2,3) 5 print s.add(2,3) 6 print s.div(5,2) 7 8 print s.system.listMethods()

XML_RPC服務端創建步驟:
1、?導入SimpleXMLRPCServer模塊
2、?實例化一個XML-RPC服務對象,在指定的端口監聽請求
server = SimpleXMLRPCServer(("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服務端代碼:

1 import datetime 2 from SimpleXMLRPCServer import SimpleXMLRPCServer 3 import xmlrpclib 4 5 def today(): 6 today = datetime.datetime.today() 7 return xmlrpclib.DateTime(today) 8 def add(x,y): 9 return x+y 10 def subtract(x,y): 11 return x-y 12 def multiply(x,y): 13 return x*y 14 def divide(x,y): 15 return x/y 16 17 server = SimpleXMLRPCServer(("localhost", 8001)) 18 print "Listening on port 8001..." 19 server.register_multicall_functions() 20 server.register_function(today, "today") 21 server.register_function(add, "add") 22 server.register_function(subtract, "subtract") 23 server.register_function(multiply, "multiply") 24 server.register_function(divide, "divide") 25 server.serve_forever()

注意:
server.register_multicall_functions()##這個函數的作用是可以使客戶端同時調用服務端的的多個函數。

Eg2客戶端代碼:

1 import xmlrpclib 2 import datetime 3 4 proxy = xmlrpclib.ServerProxy("http://localhost:8001/") 5 6 print proxy.add(7,3) 7 print proxy.subtract(7,3) 8 print proxy.multiply(7,3) 9 print proxy.divide(7,3) 10 today = proxy.today() 11 multicall = xmlrpclib.MultiCall(proxy) 12 multicall.today() 13 multicall.add(7,3) 14 multicall.subtract(7,3) 15 multicall.multiply(7,3) 16 multicall.divide(7,3) 17 result = multicall() 18 19 # convert the ISO8601 string to a datetime object 20 converted = datetime.datetime.strptime(today.value, "%Y%m%dT%H:%M:%S") 21 print "Today: %s" % converted.strftime("%d.%m.%Y, %H:%M") 22 print "Today1: %s, 7+3=%d, 7-3=%d, 7*3=%d, 7/3=%d" % tuple(result)

注意:
?multicall = xmlrpclib.MultiCall(proxy)
?……
result = multicall()##將這兩個函數之間的返回值寫入到result中。

轉載于:https://www.cnblogs.com/wanghaoran/p/3189017.html

總結

以上是生活随笔為你收集整理的Python中关于XML-RPC原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。