Python Web 服务开发者: 针对 Python 的 XML-RPC
2007-03-29 12:24:08 来源:WEB开发网实际上被代理的是服务器,这个服务器是通过初始化 ServerProxy 类的一个实例建立起来的。我们传入远程服务器的完整 URL(您必须在其中包含 URL 模式“http://”)。端口还是通常的缺省值 80。如果远程服务器不在端口 80 上侦听,而是在端口 8080 上侦听,我们将使用“http://time.xmlrpc.com:8080”。服务器代理把它们托管的所有实际远程对象都当作常规属性,这样我们就可以得到名为 currentTime 的远程对象的句柄。现在,我们只需调用这个代理对象上的方法即可,它会返回当前时间。响应是一种特殊的 XML-RPC 类型,名为 DateTime。要获得这个对象的纯字符串表示,我们可以使用它的 value 属性。
必须澄清一点:区分服务器内的代理对象这种想法实际上是一种幻想。XML-RPC 允许方法名内包含点号,而且大家一般都习惯使用诸如 pseudo_object.foo 这样的方法名,这个方法名允许客户机把它当作是对名为 pseudo_object 的远程对象的 foo 方法的调用。然而对于 XML-RPC 协议而言,pseudo_object.foo 只是在远程服务器上定义的一个名为 pseudo_object.foo 的方法。稍后您会明白为什么这个区别很重要。
运行该脚本的结果是:
$ python currtime.py
<DateTime 20020808T10:43:06 at 81dd0ec>
20020808T10:43:06
特殊类型
我们已经看到,根据规范定义, DataType 是 Python 的 XML-RPC 实现中使用的一种特殊类型。如果 XML-RPC 系统要求这种类型的话,就必须使用它来进行 XML-RPC 系统的输入和输出。换句话说,如果一个远程函数接收 DateTime 参数,您就不能向它发送象“20020808T10:43:06”这样的字符串。您将首先构建一个 DateTime 类实例。例如:
更多精彩
赞助商链接