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的三种方式:

  1. 直接从URI读取
  2. 从流读取
  3. 从字符串读取
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专栏