WEB开发网
开发学院软件开发Python Python Web 服务开发者 第 6 部分: Python SOAP 库... 阅读

Python Web 服务开发者 第 6 部分: Python SOAP 库,第 2 部分

 2007-03-29 12:12:35 来源:WEB开发网   
核心提示: 因为这种简单的办法在许多 SOAP 1.1 服务器上都行得通,所以,Python Web 服务开发者 第 6 部分: Python SOAP 库,第 2 部分(3),尽管它不能给出我们期望的结果,我们还是对它稍作研究,这种简单的办法在 Captain Haddock 服务器上行不通,我们必

因为这种简单的办法在许多 SOAP 1.1 服务器上都行得通,所以,尽管它不能给出我们期望的结果,我们还是对它稍作研究。首先,我们导入 ZSI 客户机模块和 Binding 类,这个类实现建立和调用 SOAP 请求的机制。接着,我们建立 SOAP 端点的地址的组件。注意,我们分开建立主机、URL 路径和端口。对于 SOAP.py ,您可以使用单个 URL,但在这里却不行。这些组件用来创建与远程服务器的绑定。

最后,我们调用 binding 对象的 Curse 方法来发送远程请求,在方法的返回中获得结果。不过,正如我们提到过的,这种简单的办法在 Captain Haddock 服务器上行不通。我们必须使用一种更复杂的结构来把 LangCode 参数传递给该服务器。 清单 2中的代码可以做到这一点。

清单 2:能够实现对 Captain Haddock SOAP 服务的访问的 ZSI 程序

 import sys
#Import the ZSI client
from ZSI import TC
from ZSI.client import Binding
u = '/scripts/Haddock.exe/soap/IHaddock'
n = 'urn:HaddockIntf-IHaddock'
b = Binding(url=u, host='www.tankebolaget.se', port=80, ns=n)
try:
 lang = sys.argv[1]
except IndexError:
 lang = 'us'
class CurseRequest:
  def __init__(self, langCode):
    self.LangCode = langCode
CurseRequest.typecode=TC.Struct(CurseRequest,
                [TC.String('LangCode')],
                'Curse',
                inline=1)
try:
  result_list = b.RPC(u, 'Curse', CurseRequest(lang), TC.Any(aslist=1))
  #Extract the first returned parameter
  result = result_list[0]
  print 'What captain Haddock had to say: "%s"'%result
except:
  raise
  print 'reply=', b.reply_code
  print 'reply_msg=', b.reply_msg
  print 'headers=', b.reply_headers
  print 'data=', b.data

上一页  1 2 3 4 5 6 7  下一页

Tags:Python Web 服务

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