WEB开发网
开发学院软件开发Python Python Web 服务开发者: 针对 Python 的 XML-RPC 阅读

Python Web 服务开发者: 针对 Python 的 XML-RPC

 2007-03-29 12:24:08 来源:WEB开发网   
核心提示: datetime_arg = xmlrpclib.DateTime("20020808T10:43:06")remote_obj.method(datetime_arg)还有其他几种这样的特殊类型, Boolean 和 Binary 是基本数据类型,Python Web
datetime_arg = xmlrpclib.DateTime("20020808T10:43:06")
remote_obj.method(datetime_arg)

还有其他几种这样的特殊类型。 Boolean 和 Binary 是基本数据类型,特殊的 Fault 对象则用于异常处理。自从 Python 2.3 引入了本机(native)布尔类型 bool 后, Boolean 可能就会逐渐被弃用了。 Binary 与字符串不同,因为它不限制可以传输什么样的字节。其他的 XML-RPC 类型用本机 Python 对象表示,其中列表和元组用来代替数组,字典用来代替结构。需要特别注意的是字符编码。XML-RPC 有一个倍受批评的限制,就是它只支持 ASCII 字符串(或二进制缓冲块)的传输。它根本不提供任何字符编码支持。 清单 2尝试使用 Useful Inc 的样本字符串回送(echo)服务(该服务只是接收一个字符串并返回一个同样的字符串)。

清单 2(stringecho.py):简单的字符串回送客户机

 import xmlrpclib
server = xmlrpclib.ServerProxy("http://xmlrpc.usefulinc.com/demo/server.php")
eg_obj = server.examples
result = eg_obj.stringecho(u"Freude, schönergötterfunken")
print result

但如果您运行它,就会感受到用户经常抱怨的 Python 中字符编码的苦恼了:

$ python stringecho.py
Traceback (most recent call last):
 File "stringecho.py", line 8, in ?
  print result
UnicodeError: ASCII encoding error: ordinal not in range(128)

第一个解决方案是编码为 UTF-8,这个方案看上去不错,但遗憾的是,由于 7 位 ASCII 的范围“容纳”不了 UTF-8,这个解决方案行不通。我们可以使用的解决方案是使用 UTF-7,ASCII 的范围可以容纳它,但这种编码却不常用,并且更冗长。要使用 UTF-7,请用下面的代码代替相应的代码行:

上一页  1 2 3 4 5  下一页

Tags:Python Web 服务

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接