QQRead:http://www.qqread.com/xml-soap/c347699.html
更多内容请看Python实用指南、Wlan组网----家庭专题、Python相关文章专题,或进入讨论组讨论。
把一切综合在一起
导入库后,我们将设置代理对象 remote 。这个对象将方法调用转换为远程 SOAP 消息。
它的初始化器使用管理远程请求的关键参数:服务器的 URI(被称为“端点”)、请求元素的 XML 名称空间(通过它,SOAP-as-RPC 将口头承诺变成 XML 基础)和 SOAPAction 头值。接下来,我们将确定方法参数,对于这个 Web 服务来说,方法参数只是 Haddock 骂人的语言,瑞典语(“se”)或英语(奇怪的是,是“us”而不是“en”)。
最后,我们调用名称正确的方法,代理对象的 Curse 进行 SOAP 调用,然后打印出结果。下面的会话演示了对该程序的使用:
$ python curse.py
What captain Haddock had to say: "Ectoplasmic Byproduct!"我们自己的 SOAP 服务器
用 SOAP.py 实现 SOAP 服务器相当容易。作为一个示例,我们将仿建字段,还要实现一个很常见的服务:一个程序,给出年份和月份,它将以字符串的形式打印出日历。它的程序服务器是 清单 2(calendar-ws.py)。
清单 2:实现日历服务器的 SOAP.py 程序
#!/usr/bin/env python
import sys, calendar
#Import the SOAP.py machinery
from WebServices import SOAP
CAL_NS = "http://uche.ogbuji.net/eg/ws/simple-cal"
class Calendar:
def getMonth(self, year, month):
return calendar.month(year, month)
def getYear(self, year):
return calendar.calendar(year)
server = SOAP.SOAPServer(("localhost", 8888))
cal = Calendar()
server.registerObject(cal, CAL_NS)
print "Starting server..."
server.serve_forever()进行过必要的导入后,我们为自己的服务器定义 SOAP 请求元素期望的名称空间( CAL_NS )。接下来我们定义实现所有方法的类,这些方法将被公开为 SOAP 方法。大家也可以把单个函数作为 SOAP 方法注册,但使用类方法是最灵活的,特别是当您想管理调用间的状态时。这个 Calendar 类定义了一个方法 getMonth ,该方法使用 Python 的内置日历模块在文本表单中返回月度日历,同时它还定义了另一个返回整年日历的方法。
然后创建 SOAP 服务器框架的一个实例,这个实例还带有侦听端口 8888 的指令。我们还必须创建 Calendar 类的一个实例,这个实例在下一行中被注册用来处理 SOAP 消息,同时为其指出相关的名称空间。最后,我们调用 serve_forever 方法,该方法直到进程终止才返回。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Python实用指南 (220篇文章)
- Wlan组网----家庭专题 (4217篇文章)
- Python相关文章 (220篇文章)
- Python编程 (220篇文章)
- XMLHTTPRequest的属性和方法简介 (0次浏览)



