Python Web 服务开发者 第 8 部分: Python SOAP 库
2007-03-29 12:23:34 来源:WEB开发网核心提示: #zsi-client.pyimport sys#Import the ZSI clientfrom ZSI.client import Bindingfrom ZSI import TCu = ''n = 'http://uche.ogbuji.net/eg/ws
#zsi-client.py
import sys
#Import the ZSI client
from ZSI.client import Binding
from ZSI import TC
u = ''
n = 'http://uche.ogbuji.net/eg/ws/simple-cal'
b = Binding(url=u, ns=n, host='localhost', port=8888)
b.Send(None,
"ns1:getMonth",
(2002,2),
requesttypecode=TC.Any('ns1:getMonth', aslist=b.aslist),
nsdict={'ns1':n},
)
res = b.Receive(TC.Any(aslist = b.aslist))
print res[0]
做了这些更改之后,ZSI 客户机输出 SOAP.py 服务器返回的 2002 年 2 月的日历就不会有问题了。看起来,您已经成功的完成了前面一半的分析。现在,我们要看一下在另外一个方向上如何进行通信。
对调一下:ZSI 服务器与 SOAP.py 客户机
要测试用 ZSI 服务器作为服务器的 SOAP.py 客户机,您首先要做的事情就是编写 SOAP.py 客户机。还记得吗,我们曾使用 httplib 编写一个非常低级的客户机来测试 SOAP.py 服务器(请参阅 参考资料看看有关 ZSI 的第六篇专栏文章)。由于您想知道 SOAP.py 对 ZSI 的反应如何,这样做就不管用了。为了使用您的日历 Web 服务,可以编写一个速度较快的客户机,如 清单 2中所示。
清单 2. 更新的 SOAP.py 客户机
#!/usr/bin/env python
import sys
#Import the SOAP.py machinery
from WebServices import SOAP
CAL_NS = "http://uche.ogbuji.net/eg/ws/simple-cal"
remote = SOAP.SOAPProxy(
"localhost:8888",
#namespace=CAL_NS,
soapaction=""
)
print remote.getMonth(2002,2)
更多精彩
赞助商链接