日期:2012-09-12  浏览次数:20458 次

使用 Visual Basic .NET 访问 Google 的 Web 服务

学习如何从 Visual Basic .NET Windows 前端访问 Google 的 Web API 服务。本文说明如何调用 SOAP Web 服务、执行 Google 搜索、访问 Google 缓存中的页面,以及调用 Google 的拼写检查器。

从 MSDN Code Center(英文)下载 VBGoogleDemo.exe。

下载示例

目录
Web 服务真酷
示例窗体
过程
有关异常处理的一点说明
小结
如何获取工具包和许可证密钥
Web 服务真酷
Web 服务(英文)方兴未艾,是最激动人心的技术,正对 Internet 和商业产生巨大的影响。使用 Web 服务可以以常规方式开展业务,而将 Internet 作为传输工具,通过防火墙执行远程过程调用。Google 是提供公共 Web 服务的先驱之一,允许任何开发人员访问 Google 的搜索、缓存和拼写检查服务。Visual Studio .NET 简化了访问 Google Web API 服务各种功能的过程。

示例窗体
图 1 显示了示例窗体的界面。它包含一个文本框,用于输入 Google 许可证密钥(请参阅补充说明“如何获取 Google Web API 工具包和许可证密钥”),还包含三个区域用于测试三种 Google 功能。在第一个区域中输入搜索文本,将返回结果的数目。在第二个区域中输入 Web 站点,将返回 Google 缓存中页面的大小。在第三个区域中调用 Google 拼写检查功能,将返回检查值。



图 1:正在运行的窗体

过程
了解窗体的功能后,让我们来看看对窗体进行编码的步骤。主要包括四个步骤:

引用 Web 服务
创建执行搜索的功能
创建检查缓存大小的功能
创建调用拼写检查的功能
引用 Google Web 服务
引用 Google Web 服务的步骤如下:

创建新的 Windows Forms(Windows 窗体)项目。
右键单击该项目。
选择 Add Web Reference(添加 Web 引用)。
注意:Add Web Reference(添加 Web 引用)选项与 Visual Basic 6 中的 Add Reference(添加引用)类似,不同之处在于,现在您可以访问位于不同网络上的 XML Web service,而不是访问 COM 组件的所有方法。优点在于,这种访问的类型是确定的,而且可以像触发任何本地对象一样触发智能感知。
在 Address(地址)文本框中,键入 Web 服务描述的位置 (http://api.google.com/GoogleSearch.wsdl)。
单击 Add Reference(添加引用)按钮,导入 Web 服务定义。
导入定义后,转到 Solution Explorer(解决方案资源管理器),然后打开树上的 Web References(Web 引用)节点。
右键单击 Google 引用并选择 Rename(重命名),重命名引用。
拖动上面显示的窗体。
为每个按钮添加代码。双击每个按钮(与在 Visual Basic 6 中一样),即可访问触发单击事件时运行的方法。让我们依次看看各个按钮。

执行 Google 搜索
查看列表 1 中 btnSearch_Click 方法的代码,我们可以看到创建了一个新的 GoogleSearchService 对象。在下一行中,创建了一个新的 GoogleSearchResult 对象,并且使用了在一行中声明和创建对象的 Visual Basic .NET 新功能。在 Visual Basic .NET 中,以下两段代码是等效的:

Dim x As String = "Hello"


Dim x As String
x = "Hello"
创建 result 对象(通过向搜索对象传递 Google 许可证密钥、搜索文本和其他参数创建)后,使用 estimatedTotalResultsCount 属性填写标签。在四行代码中,调用了一个 Web 范围内的过程,执行了一个 Google 搜索,并发送了结果的数目。

本示例简单说明了如何使用搜索服务。有关搜索请求的参数和返回数据的详细信息,请参阅 Google 的参考文档。

' 创建 Google 搜索对象。
Dim s As New Google.GoogleSearchService()
' 调用搜索方法。
Dim r As Google.GoogleSearchResult =
   s.doGoogleSearch(txtLicenseKey.Text, txtSearchTerm.Text, 0, 1, _
   False, "", False, "", "", "")
' 提取并显示估计的搜索结果的数目。
Dim estResults As Integer = r.estimatedTotalResultsCount
lblSearchResults.Text = CStr(estResults)
列表 1:btnSearch_Click 方法

获取 Web 页面的大小
如列表 2 所示,获取 Google 服务器上缓存的 Web 页面的大小很容易。这里调用了 doGetCachedPage 方法,并将其指定给字节数组,然后由数组提供其长度。

' 创建 Google 搜索对象
Dim s As New Google.GoogleSearchService()
' 调用 doGetCachedPage 方法并获取缓存字节
Dim bytes() As System.Byte = _
     s.doGetCachedPage(txtLicenseKey.Text, txtCachePage.Text)
' 显示缓存页面的长度
lblCacheResults.Text = CStr(bytes.Length)
列表 2:btnCache_Click 方法

执行拼写检查
最后一种 Google 方法调用 Google 引擎的拼写检查功能。调用了 GoogleSearchService 对象上的 doSpellingSuggestion 方法,如果获得结果,我们就简单地显示这些结果。

' 创建 Google 搜索对象
Dim s As New Google.GoogleSearchService()
' 请求拼写建议
Dim suggestion As String = _
     s.doSpellingSuggestion(txtLicenseKey.Text, txtSpell.Text)
' 显示建议(如果有)
If suggestion Is Nothing Then
     lblSpellResults.Text = "<无建议>"
Else
     lblSpellResults.Text = suggestion
End If
列表 3:btnSpell_Click 方法

有关异常处理的一点说明
下载的代码将所有功能都包含在 Try...Catch 块中(参见列表 4)。使用此块可以捕获从 SOAP Web 服务中返回的任何错误,并在消息框中显示这些错误。最常见的错误通常会在忘记输入许可证密钥时出现。要获取许可证密钥,请参阅如何获取工具包和许可证密钥。

' 创建 Google 搜索对象
Dim s As New Google.GoogleSearchService()
Try
    ' 调用 doGetCachedPage 方法并获取缓存字节
    Dim bytes() As System.Byte = _
        s