当前位置: 主页 > 日志 > Python >

Python XML-RPC

XML-RPC

xmlrpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据。

一个rpc系统,必然包括2个部分:

1)rpc client,用来向rpc server调用方法,并接收方法的返回数据;

2)rpc server,用于响应rpc client的请求,执行方法,并回送方法执行结果。

RPC是Remote Procedure Call的缩写,翻译成中文就是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。

以上内容摘自:百度百科

 

xmlrpc的好处:

1. 传输复杂的数据。

2. 通过程序语言的封装,实现远程对象的调用。

 

一个示例:

# The server code
from SimpleXMLRPCServer import SimpleXMLRPCServer

def is_even(n):
    return n%2 == 0

server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
server.register_function(is_even, "is_even")
server.serve_forever()

 

# The client code
import xmlrpclib

proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
print "3 is even: %s" % str(proxy.is_even(3))
print "100 is even: %s" % str(proxy.is_even(100))

 

支持传输的数据类型:

Name Meaning
boolean The True and False constants
integers Pass in directly
floating-point numbers Pass in directly
strings Pass in directly
arrays Any Python sequence type containing conformable elements. Arrays are returned as lists
structures A Python dictionary. Keys must be strings, values may be any conformable type. Objects of user-defined classes can be passed in; only their __dict__ attribute is transmitted.
dates in seconds since the epoch (pass in an instance of the DateTime class) or a datetime.datetime instance.
binary data pass in an instance of the Binary wrapper class

 

xmlrpc能用来干啥?

开发API。

大名鼎鼎的WordPress就有xmlrpc接口,比如,可以用于该接口发布文章。想了解更多可以看这篇文章 http://blog.bluesky.cn/archives/466/using-xml-rpc-protocol-to-read-and-write-articles-on-wordpress.html,我还找到了封装非常好的库wordpresslib(http://www.blackbirdblog.it/programmazione/progetti/28)。

 

参考文章:

http://docs.python.org/library/xmlrpclib.html

http://en.wikipedia.org/wiki/XML-RPC

http://www.cnblogs.com/coderzh/archive/2008/12/03/1346994.html

[日志信息]

该日志于 2012-06-14 00:48 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “Python XML-RPC” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部