WSDL处理指南 - Python
概述
本文档是IBM developerWorks上的教程,介绍如何使用Python库WSDL4Py来处理Web Services Description Language (WSDL)。WSDL是由IBM、Microsoft等开发的XML格式,用于技术描述Web服务。
作者
Mike Olson和Uche Ogbuji是Fourthought Inc.的创始人和首席顾问,该公司开发了开源工具4Suite和4Suite Server。
主要内容
1. 入门 - 设置WSDL4Py
前置条件:
- 具备Python编程语言和WSDL的基本知识
- Python版本:建议2.0或更高,1.5.2也可用
- 4Suite版本:0.11或更高(需提供XPath库)
安装步骤:
python setup.py install验证安装:
python -c "import wsdllib"2. 读取和检查WSDL描述
WSDL提供Web服务的描述信息,通常存储在UDDI注册中心。
读取WSDL的三种方式:
- 直接从URI读取
- 从流读取
- 从字符串读取
import wsdllib
wsdl = wsdllib.ReadFromUri('http://uche.ogbuji.net/articles/wsdl/endorsementservice.xml')3. Wsdl实例结构
每个Wsdl实例包含WSDL描述的组件:
- messages(消息)
- portTypes(端口类型)
- bindings(绑定)
- services(服务)
- types(类型信息)
这些以字典形式存储,键对应XML源中的name属性。
4. 生成和修改WSDL
创建空的WSDL描述并动态添加元素:
def GenerateEsWsdl():
wsdl = wsdllib.Wsdl()
msg = wsdl.addMessage("GetEndorsingBoarderRequest")
msg.documentation = "Query the pro who endorses the given gear"
part = msg.addPart("body", "esxsd:GetEndorsingBoarder")
return wsdl转换为DOM并打印:
wsdl = GenerateEsWsdl()
doc = wsdl.toDom()
from xml.dom.ext import PrettyPrint
PrettyPrint(doc)5. 实现注意事项
- WSDL完全由XML表示定义
- 使用Python字典处理命名结构
- DOM作为XML转换的基础
- XPath表达式用于提取关键元素
6. Web Services与Python
- Python是Web服务开发的理想语言
- 有大量Python Web服务库可选
- WSDL4Py项目主页提供新闻组和支持
资源
- Python教程:Evelyn Mitchell的Python 101
- WSDL 1.1:W3C Note
- IBM WSDL Toolkit
- 相关论文:Uche Ogbuji的WSDL系列文章
相关链接
- developerWorks Python专区
- WSDL4Py项目页面
- The Python Web services developer专栏