Python Web 服务开发者 第 5 部分: Python SOAP 库
2007-03-30 12:25:51 来源:WEB开发网核心提示: 或者,我们可以试试,Python Web 服务开发者 第 5 部分: Python SOAP 库(4),作者尝试的第一个服务,卫生保健提供者定位器,该服务返回漫画《丁丁历险记》中的人物 Haddock 船长常用的骂人语言(是的,大多数 Web 服务都是这样),在遇到下列报错消息时显示 SO
或者,我们可以试试。作者尝试的第一个服务,卫生保健提供者定位器,在遇到下列报错消息时显示 SOAP 互操作性的当前状态中的陷阱:
WebServices.SOAP.faultType: <Fault soap:Client:
Server did not recognize the value of
HTTP Header SOAPAction: "".>
哦。SOAPAction 是一个 HTTP 头,应该是用来标记被访问服务的。它是 SOAP 请求中必需的头,但即便是设置了所需的头(只是一对空的双引号)后,上面的错误仍然存在。作者发现大多数 MS SOAP 实现都存在这个问题。在试遍了这些服务后,我们断定,Delphi 实现好象与 SOAP.py 合作得最好,但在试服务时 — 即使是用 Delphi 实现时,也返回复杂的类型,比如列表,SOAP.py 无法使用它们,返回不带数据的 WebServices.SOAP.typedArrayType 实例。
最后,作者选择了一个相当合适的 Web 服务,该服务返回漫画《丁丁历险记》中的人物 Haddock 船长常用的骂人语言(是的,大多数 Web 服务都是这样)。 清单 1(curse.py)就是这个程序。
清单 1:访问 Curse 生成器 SOAP 服务的 SOAP.py 程序
#!/usr/bin/env python
#http://xmethods.net/detail.html?id=175
import sys
#Import the SOAP.py machinery
from WebServices import SOAP
remote = SOAP.SOAPProxy(
"http://www.tankebolaget.se/scripts/Haddock.exe/soap/IHaddock",
namespace="urn:HaddockIntf-IHaddock",
soapaction="urn:HaddockIntf-IHaddock#Curse"
)
try:
lang = sys.argv[1]
except IndexError:
lang = "us"
result = remote.Curse(LangCode=lang)
print "What captain Haddock had to say: "%s""%result
更多精彩
赞助商链接