第 12 章 SOAP Web 服务

第 11 章 关注 HTTP 上面向文档的web 服务。“输入参数” 是 URL,“返回值” 是需要你来解析的一个实际的 XML 文档。

本章将关注更加结构化的 SOAP web 服务。SOAP 不需要你直接与 HTTP 请求和 XML 文档打交道,而是允许你模拟返回原始数据类型的函数调用。正像你将要看到的,这个描述恰如其份;你可以使用标准 Python 调用语法通过 SOAP 库去调用一个函数,这个函数也自然会返回 Python 对象和值。但揭开这层面纱,SOAP 库实际上执行了一个多个 XML 文档和远程服务器参与的复杂处理过程。

SOAP 的贴切定义很复杂,不要误认为 SOAP 就是用于调用远程函数。有些人觉得应该补充上:SOAP 还允许单向异步的信息通过,以及面向文档的 Web 服务。有这样想法的人是正确的,SOAP 的确是这样,但却不止于此。但这一章的重点在于所谓的 “RPC-styleSOAP――调用远程函数获得返回结果。

12.1. 概览

你用 Google,对吧?它是一个很流行的搜索引擎。你是否希望能以程序化的方式访问 Google 的搜索结果呢?现在你能做到了。下面是一个用 Python 搜索 Google 的程序。

例 12.1. search.py

from SOAPpy import WSDL

# you'll need to configure these two values;
# see http://www.bhlaab.com/963/apis/
WSDLFILE = '/path/to/copy/of/GoogleSearch.wsdl'
APIKEY = 'YOUR_GOOGLE_API_KEY'

_server = WSDL.Proxy(WSDLFILE)
def search(q):
    """Search Google and return list of {title, link, description}"""
    results = _server.doGoogleSearch(
        APIKEY, q, 0, 10, False, "", False, "", "utf-8", "utf-8")
    return [{"title": r.title.encode("utf-8"),
             "link": r.URL.encode("utf-8"),
             "description": r.snippet.encode("utf-8")}
            for r in results.resultElements]

if __name__ == '__main__':
    import sys
    for r in search(sys.argv[1])[:5]:
        print r['title']
        print r['link']
        print r['description']
        print

你可以在较大的程序中以模块导入并使用它,也可以在命令行上运行这个脚本。在命令行上,需要把查询字符串作为命令行参数使用,之后就会打印出最前面的五个 Google 查询结果,包括:URL、标题和描述信息。

下面是以 “python” 作为命令行参数的查询结果。

例 12.2. search.py 的使用样例

C:\diveintopython\common\py> python search.py "python"
<b>Python</b> Programming Language
http://www.bhlaab.com/021/
Home page for <b>Python</b>, an interpreted, interactive, object-oriented,
extensible<br> programming language. <b>...</b> <b>Python</b>
is OSI Certified Open Source: OSI Certified.

<b>Python</b> Documentation Index
http://www.bhlaab.com/454/doc/
 <b>...</b> New-style classes (aka descrintro). Regular expressions. Database
API. Email Us.<br> docs@<b>python</b>.org. (c) 2004. <b>Python</b>
Software Foundation. <b>Python</b> Documentation. <b>...</b>

Download <b>Python</b> Software
http://www.bhlaab.com/122/download/
Download Standard <b>Python</b> Software. <b>Python</b> 2.3.3 is the
current production<br> version of <b>Python</b>. <b>...</b>
<b>Python</b> is OSI Certified Open Source:

Pythonline
http://www.bhlaab.com/043/


Dive Into <b>Python</b>
http://www.bhlaab.com/261/
Dive Into <b>Python</b>. <b>Python</b> from novice to pro. Find:
<b>...</b> It is also available in multiple<br> languages. Read
Dive Into <b>Python</b>. This book is still being written. <b>...</b>

进一步阅读

重庆时时彩平台哪个好 时时彩烈火计划 时时彩软件吧后二版 重庆时时彩大小软件 财付通充值q币
加加宝时时彩软件官网 重庆时时彩连线走势图 凤凰时时彩玩法 天机时时彩计划王软件 时时彩怎么做号最稳定
江西时时彩大小技巧 内蒙古11选五开奖结果 时时彩代理赚钱 内蒙古体育彩票11选5 时时彩信誉老平台排行
平刷王手机版 拉菲2时时彩平台官网 时时彩可靠的投注平台 怎么举报时时彩 时时彩四星断组技巧
领航时时彩重庆版 广东十一选五推荐号码 浙江体彩11选5爱彩 广东36选7开奖走势图 新疆时时彩官方网站
山东十一选五遗漏 重庆彩票幸运农场 云南十一选五一定牛 新疆18选7开獎结杲 足彩玩法
天津十一选五 甘肃快三开奖查询 福建体彩22选5走势图大星彩票 天津时时彩奖金 北京赛车哪个平台好啊
体彩快乐扑克 湖北11选5走势 北京pk10软件计划 天天彩选4开奖查询 北京pk10开奖视频